diff --git a/metadata/metadata b/metadata/metadata --- a/metadata/metadata +++ b/metadata/metadata @@ -1,10104 +1,10160 @@ [Arith_Prog_Rel_Primes] title = Arithmetic progressions and relative primes author = José Manuel Rodríguez Caballero topic = Mathematics/Number theory date = 2020-02-01 notify = jose.manuel.rodriguez.caballero@ut.ee abstract = This article provides a formalization of the solution obtained by the author of the Problem “ARITHMETIC PROGRESSIONS” from the Putnam exam problems of 2002. The statement of the problem is as follows: For which integers n > 1 does the set of positive integers less than and relatively prime to n constitute an arithmetic progression? [Banach_Steinhaus] title = Banach-Steinhaus Theorem author = Dominique Unruh , Jose Manuel Rodriguez Caballero topic = Mathematics/Analysis date = 2020-05-02 notify = jose.manuel.rodriguez.caballero@ut.ee, unruh@ut.ee abstract = We formalize in Isabelle/HOL a result due to S. Banach and H. Steinhaus known as the Banach-Steinhaus theorem or Uniform boundedness principle: a pointwise-bounded family of continuous linear operators from a Banach space to a normed space is uniformly bounded. Our approach is an adaptation to Isabelle/HOL of a proof due to A. Sokal. [Complex_Geometry] title = Complex Geometry author = Filip Marić , Danijela Simić topic = Mathematics/Geometry date = 2019-12-16 notify = danijela@matf.bg.ac.rs, filip@matf.bg.ac.rs, boutry@unistra.fr abstract = A formalization of geometry of complex numbers is presented. Fundamental objects that are investigated are the complex plane extended by a single infinite point, its objects (points, lines and circles), and groups of transformations that act on them (e.g., inversions and Möbius transformations). Most objects are defined algebraically, but correspondence with classical geometric definitions is shown. [Poincare_Disc] title = Poincaré Disc Model author = Danijela Simić , Filip Marić , Pierre Boutry topic = Mathematics/Geometry date = 2019-12-16 notify = danijela@matf.bg.ac.rs, filip@matf.bg.ac.rs, boutry@unistra.fr abstract = We describe formalization of the Poincaré disc model of hyperbolic geometry within the Isabelle/HOL proof assistant. The model is defined within the extended complex plane (one dimensional complex projectives space ℂP1), formalized in the AFP entry “Complex Geometry”. Points, lines, congruence of pairs of points, betweenness of triples of points, circles, and isometries are defined within the model. It is shown that the model satisfies all Tarski's axioms except the Euclid's axiom. It is shown that it satisfies its negation and the limiting parallels axiom (which proves it to be a model of hyperbolic geometry). [Fourier] title = Fourier Series author = Lawrence C Paulson topic = Mathematics/Analysis date = 2019-09-06 notify = lp15@cam.ac.uk abstract = This development formalises the square integrable functions over the reals and the basics of Fourier series. It culminates with a proof that every well-behaved periodic function can be approximated by a Fourier series. The material is ported from HOL Light: https://github.com/jrh13/hol-light/blob/master/100/fourier.ml [Generic_Deriving] title = Deriving generic class instances for datatypes author = Jonas Rädle , Lars Hupel topic = Computer science/Data structures date = 2018-11-06 notify = jonas.raedle@gmail.com abstract =

We provide a framework for automatically deriving instances for generic type classes. Our approach is inspired by Haskell's generic-deriving package and Scala's shapeless library. In addition to generating the code for type class functions, we also attempt to automatically prove type class laws for these instances. As of now, however, some manual proofs are still required for recursive datatypes.

Note: There are already articles in the AFP that provide automatic instantiation for a number of classes. Concretely, Deriving allows the automatic instantiation of comparators, linear orders, equality, and hashing. Show instantiates a Haskell-style show class.

Our approach works for arbitrary classes (with some Isabelle/HOL overhead for each class), but a smaller set of datatypes.

[Partial_Order_Reduction] title = Partial Order Reduction author = Julian Brunner topic = Computer science/Automata and formal languages date = 2018-06-05 notify = brunnerj@in.tum.de abstract = This entry provides a formalization of the abstract theory of ample set partial order reduction. The formalization includes transition systems with actions, trace theory, as well as basics on finite, infinite, and lazy sequences. We also provide a basic framework for static analysis on concurrent systems with respect to the ample set condition. [CakeML] title = CakeML author = Lars Hupel , Yu Zhang <> contributors = Johannes Åman Pohjola <> topic = Computer science/Programming languages/Language definitions date = 2018-03-12 notify = hupel@in.tum.de abstract = CakeML is a functional programming language with a proven-correct compiler and runtime system. This entry contains an unofficial version of the CakeML semantics that has been exported from the Lem specifications to Isabelle. Additionally, there are some hand-written theory files that adapt the exported code to Isabelle and port proofs from the HOL4 formalization, e.g. termination and equivalence proofs. [CakeML_Codegen] title = A Verified Code Generator from Isabelle/HOL to CakeML author = Lars Hupel topic = Computer science/Programming languages/Compiling, Logic/Rewriting date = 2019-07-08 notify = lars@hupel.info abstract = This entry contains the formalization that accompanies my PhD thesis (see https://lars.hupel.info/research/codegen/). I develop a verified compilation toolchain from executable specifications in Isabelle/HOL to CakeML abstract syntax trees. This improves over the state-of-the-art in Isabelle by providing a trustworthy procedure for code generation. [DiscretePricing] title = Pricing in discrete financial models author = Mnacho Echenim topic = Mathematics/Probability theory, Mathematics/Games and economics date = 2018-07-16 notify = mnacho.echenim@univ-grenoble-alpes.fr abstract = We have formalized the computation of fair prices for derivative products in discrete financial models. As an application, we derive a way to compute fair prices of derivative products in the Cox-Ross-Rubinstein model of a financial market, thus completing the work that was presented in this paper. extra-history = Change history: [2019-05-12]: Renamed discr_mkt predicate to stk_strict_subs and got rid of predicate A for a more natural definition of the type discrete_market; renamed basic quantity processes for coherent notation; renamed value_process into val_process and closing_value_process to cls_val_process; relaxed hypothesis of lemma CRR_market_fair_price. Added functions to price some basic options. (revision 0b813a1a833f)
[Pell] title = Pell's Equation author = Manuel Eberl topic = Mathematics/Number theory date = 2018-06-23 notify = eberlm@in.tum.de abstract =

This article gives the basic theory of Pell's equation x2 = 1 + Dy2, where D ∈ ℕ is a parameter and x, y are integer variables.

The main result that is proven is the following: If D is not a perfect square, then there exists a fundamental solution (x0, y0) that is not the trivial solution (1, 0) and which generates all other solutions (x, y) in the sense that there exists some n ∈ ℕ such that |x| + |y| √D = (x0 + y0 √D)n. This also implies that the set of solutions is infinite, and it gives us an explicit and executable characterisation of all the solutions.

Based on this, simple executable algorithms for computing the fundamental solution and the infinite sequence of all non-negative solutions are also provided.

[WebAssembly] title = WebAssembly author = Conrad Watt topic = Computer science/Programming languages/Language definitions date = 2018-04-29 notify = caw77@cam.ac.uk abstract = This is a mechanised specification of the WebAssembly language, drawn mainly from the previously published paper formalisation of Haas et al. Also included is a full proof of soundness of the type system, together with a verified type checker and interpreter. We include only a partial procedure for the extraction of the type checker and interpreter here. For more details, please see our paper in CPP 2018. [Knuth_Morris_Pratt] title = The string search algorithm by Knuth, Morris and Pratt author = Fabian Hellauer , Peter Lammich topic = Computer science/Algorithms date = 2017-12-18 notify = hellauer@in.tum.de, lammich@in.tum.de abstract = The Knuth-Morris-Pratt algorithm is often used to show that the problem of finding a string s in a text t can be solved deterministically in O(|s| + |t|) time. We use the Isabelle Refinement Framework to formulate and verify the algorithm. Via refinement, we apply some optimisations and finally use the Sepref tool to obtain executable code in Imperative/HOL. [Minkowskis_Theorem] title = Minkowski's Theorem author = Manuel Eberl topic = Mathematics/Geometry, Mathematics/Number theory date = 2017-07-13 notify = eberlm@in.tum.de abstract =

Minkowski's theorem relates a subset of ℝn, the Lebesgue measure, and the integer lattice ℤn: It states that any convex subset of ℝn with volume greater than 2n contains at least one lattice point from ℤn\{0}, i. e. a non-zero point with integer coefficients.

A related theorem which directly implies this is Blichfeldt's theorem, which states that any subset of ℝn with a volume greater than 1 contains two different points whose difference vector has integer components.

The entry contains a proof of both theorems.

[Name_Carrying_Type_Inference] title = Verified Metatheory and Type Inference for a Name-Carrying Simply-Typed Lambda Calculus author = Michael Rawson topic = Computer science/Programming languages/Type systems date = 2017-07-09 notify = mr644@cam.ac.uk, michaelrawson76@gmail.com abstract = I formalise a Church-style simply-typed \(\lambda\)-calculus, extended with pairs, a unit value, and projection functions, and show some metatheory of the calculus, such as the subject reduction property. Particular attention is paid to the treatment of names in the calculus. A nominal style of binding is used, but I use a manual approach over Nominal Isabelle in order to extract an executable type inference algorithm. More information can be found in my undergraduate dissertation. [Propositional_Proof_Systems] title = Propositional Proof Systems author = Julius Michaelis , Tobias Nipkow topic = Logic/Proof theory date = 2017-06-21 notify = maintainafpppt@liftm.de abstract = We formalize a range of proof systems for classical propositional logic (sequent calculus, natural deduction, Hilbert systems, resolution) and prove the most important meta-theoretic results about semantics and proofs: compactness, soundness, completeness, translations between proof systems, cut-elimination, interpolation and model existence. [Optics] title = Optics author = Simon Foster , Frank Zeyda topic = Computer science/Functional programming, Mathematics/Algebra date = 2017-05-25 notify = simon.foster@york.ac.uk abstract = Lenses provide an abstract interface for manipulating data types through spatially-separated views. They are defined abstractly in terms of two functions, get, the return a value from the source type, and put that updates the value. We mechanise the underlying theory of lenses, in terms of an algebraic hierarchy of lenses, including well-behaved and very well-behaved lenses, each lens class being characterised by a set of lens laws. We also mechanise a lens algebra in Isabelle that enables their composition and comparison, so as to allow construction of complex lenses. This is accompanied by a large library of algebraic laws. Moreover we also show how the lens classes can be applied by instantiating them with a number of Isabelle data types. extra-history = Change history: [2020-03-02]: Added partial bijective and symmetric lenses. Improved alphabet command generating additional lenses and results. Several additional lens relations, including observational equivalence. Additional theorems throughout. Adaptations for Isabelle 2020. (revision 44e2e5c) [Game_Based_Crypto] title = Game-based cryptography in HOL author = Andreas Lochbihler , S. Reza Sefidgar <>, Bhargav Bhatt topic = Computer science/Security/Cryptography date = 2017-05-05 notify = mail@andreas-lochbihler.de abstract =

In this AFP entry, we show how to specify game-based cryptographic security notions and formally prove secure several cryptographic constructions from the literature using the CryptHOL framework. Among others, we formalise the notions of a random oracle, a pseudo-random function, an unpredictable function, and of encryption schemes that are indistinguishable under chosen plaintext and/or ciphertext attacks. We prove the random-permutation/random-function switching lemma, security of the Elgamal and hashed Elgamal public-key encryption scheme and correctness and security of several constructions with pseudo-random functions.

Our proofs follow the game-hopping style advocated by Shoup and Bellare and Rogaway, from which most of the examples have been taken. We generalise some of their results such that they can be reused in other proofs. Thanks to CryptHOL's integration with Isabelle's parametricity infrastructure, many simple hops are easily justified using the theory of representation independence.

extra-history = Change history: [2018-09-28]: added the CryptHOL tutorial for game-based cryptography (revision 489a395764ae) [Multi_Party_Computation] title = Multi-Party Computation author = David Aspinall , David Butler topic = Computer science/Security date = 2019-05-09 notify = dbutler@turing.ac.uk abstract = We use CryptHOL to consider Multi-Party Computation (MPC) protocols. MPC was first considered by Yao in 1983 and recent advances in efficiency and an increased demand mean it is now deployed in the real world. Security is considered using the real/ideal world paradigm. We first define security in the semi-honest security setting where parties are assumed not to deviate from the protocol transcript. In this setting we prove multiple Oblivious Transfer (OT) protocols secure and then show security for the gates of the GMW protocol. We then define malicious security, this is a stronger notion of security where parties are assumed to be fully corrupted by an adversary. In this setting we again consider OT, as it is a fundamental building block of almost all MPC protocols. [Sigma_Commit_Crypto] title = Sigma Protocols and Commitment Schemes author = David Butler , Andreas Lochbihler topic = Computer science/Security/Cryptography date = 2019-10-07 notify = dbutler@turing.ac.uk abstract = We use CryptHOL to formalise commitment schemes and Sigma-protocols. Both are widely used fundamental two party cryptographic primitives. Security for commitment schemes is considered using game-based definitions whereas the security of Sigma-protocols is considered using both the game-based and simulation-based security paradigms. In this work, we first define security for both primitives and then prove secure multiple case studies: the Schnorr, Chaum-Pedersen and Okamoto Sigma-protocols as well as a construction that allows for compound (AND and OR statements) Sigma-protocols and the Pedersen and Rivest commitment schemes. We also prove that commitment schemes can be constructed from Sigma-protocols. We formalise this proof at an abstract level, only assuming the existence of a Sigma-protocol; consequently, the instantiations of this result for the concrete Sigma-protocols we consider come for free. [CryptHOL] title = CryptHOL author = Andreas Lochbihler topic = Computer science/Security/Cryptography, Computer science/Functional programming, Mathematics/Probability theory date = 2017-05-05 notify = mail@andreas-lochbihler.de abstract =

CryptHOL provides a framework for formalising cryptographic arguments in Isabelle/HOL. It shallowly embeds a probabilistic functional programming language in higher order logic. The language features monadic sequencing, recursion, random sampling, failures and failure handling, and black-box access to oracles. Oracles are probabilistic functions which maintain hidden state between different invocations. All operators are defined in the new semantic domain of generative probabilistic values, a codatatype. We derive proof rules for the operators and establish a connection with the theory of relational parametricity. Thus, the resuting proofs are trustworthy and comprehensible, and the framework is extensible and widely applicable.

The framework is used in the accompanying AFP entry "Game-based Cryptography in HOL". There, we show-case our framework by formalizing different game-based proofs from the literature. This formalisation continues the work described in the author's ESOP 2016 paper.

[Constructive_Cryptography] title = Constructive Cryptography in HOL author = Andreas Lochbihler , S. Reza Sefidgar<> topic = Computer science/Security/Cryptography, Mathematics/Probability theory date = 2018-12-17 notify = mail@andreas-lochbihler.de, reza.sefidgar@inf.ethz.ch abstract = Inspired by Abstract Cryptography, we extend CryptHOL, a framework for formalizing game-based proofs, with an abstract model of Random Systems and provide proof rules about their composition and equality. This foundation facilitates the formalization of Constructive Cryptography proofs, where the security of a cryptographic scheme is realized as a special form of construction in which a complex random system is built from simpler ones. This is a first step towards a fully-featured compositional framework, similar to Universal Composability framework, that supports formalization of simulation-based proofs. [Probabilistic_While] title = Probabilistic while loop author = Andreas Lochbihler topic = Computer science/Functional programming, Mathematics/Probability theory, Computer science/Algorithms date = 2017-05-05 notify = mail@andreas-lochbihler.de abstract = This AFP entry defines a probabilistic while operator based on sub-probability mass functions and formalises zero-one laws and variant rules for probabilistic loop termination. As applications, we implement probabilistic algorithms for the Bernoulli, geometric and arbitrary uniform distributions that only use fair coin flips, and prove them correct and terminating with probability 1. extra-history = Change history: [2018-02-02]: Added a proof that probabilistic conditioning can be implemented by repeated sampling. (revision 305867c4e911)
[Monad_Normalisation] title = Monad normalisation author = Joshua Schneider <>, Manuel Eberl , Andreas Lochbihler topic = Tools, Computer science/Functional programming, Logic/Rewriting date = 2017-05-05 notify = mail@andreas-lochbihler.de abstract = The usual monad laws can directly be used as rewrite rules for Isabelle’s simplifier to normalise monadic HOL terms and decide equivalences. In a commutative monad, however, the commutativity law is a higher-order permutative rewrite rule that makes the simplifier loop. This AFP entry implements a simproc that normalises monadic expressions in commutative monads using ordered rewriting. The simproc can also permute computations across control operators like if and case. [Monomorphic_Monad] title = Effect polymorphism in higher-order logic author = Andreas Lochbihler topic = Computer science/Functional programming date = 2017-05-05 notify = mail@andreas-lochbihler.de abstract = The notion of a monad cannot be expressed within higher-order logic (HOL) due to type system restrictions. We show that if a monad is used with values of only one type, this notion can be formalised in HOL. Based on this idea, we develop a library of effect specifications and implementations of monads and monad transformers. Hence, we can abstract over the concrete monad in HOL definitions and thus use the same definition for different (combinations of) effects. We illustrate the usefulness of effect polymorphism with a monadic interpreter for a simple language. extra-history = Change history: [2018-02-15]: added further specifications and implementations of non-determinism; more examples (revision bc5399eea78e)
[Constructor_Funs] title = Constructor Functions author = Lars Hupel topic = Tools date = 2017-04-19 notify = hupel@in.tum.de abstract = Isabelle's code generator performs various adaptations for target languages. Among others, constructor applications have to be fully saturated. That means that for constructor calls occuring as arguments to higher-order functions, synthetic lambdas have to be inserted. This entry provides tooling to avoid this construction altogether by introducing constructor functions. [Lazy_Case] title = Lazifying case constants author = Lars Hupel topic = Tools date = 2017-04-18 notify = hupel@in.tum.de abstract = Isabelle's code generator performs various adaptations for target languages. Among others, case statements are printed as match expressions. Internally, this is a sophisticated procedure, because in HOL, case statements are represented as nested calls to the case combinators as generated by the datatype package. Furthermore, the procedure relies on laziness of match expressions in the target language, i.e., that branches guarded by patterns that fail to match are not evaluated. Similarly, if-then-else is printed to the corresponding construct in the target language. This entry provides tooling to replace these special cases in the code generator by ignoring these target language features, instead printing case expressions and if-then-else as functions. [Dict_Construction] title = Dictionary Construction author = Lars Hupel topic = Tools date = 2017-05-24 notify = hupel@in.tum.de abstract = Isabelle's code generator natively supports type classes. For targets that do not have language support for classes and instances, it performs the well-known dictionary translation, as described by Haftmann and Nipkow. This translation happens outside the logic, i.e., there is no guarantee that it is correct, besides the pen-and-paper proof. This work implements a certified dictionary translation that produces new class-free constants and derives equality theorems. [Higher_Order_Terms] title = An Algebra for Higher-Order Terms author = Lars Hupel contributors = Yu Zhang <> topic = Computer science/Programming languages/Lambda calculi date = 2019-01-15 notify = lars@hupel.info abstract = In this formalization, I introduce a higher-order term algebra, generalizing the notions of free variables, matching, and substitution. The need arose from the work on a verified compiler from Isabelle to CakeML. Terms can be thought of as consisting of a generic (free variables, constants, application) and a specific part. As example applications, this entry provides instantiations for de-Bruijn terms, terms with named variables, and Blanchette’s λ-free higher-order terms. Furthermore, I implement translation functions between de-Bruijn terms and named terms and prove their correctness. [Subresultants] title = Subresultants author = Sebastiaan Joosten , René Thiemann , Akihisa Yamada topic = Mathematics/Algebra date = 2017-04-06 notify = rene.thiemann@uibk.ac.at abstract = We formalize the theory of subresultants and the subresultant polynomial remainder sequence as described by Brown and Traub. As a result, we obtain efficient certified algorithms for computing the resultant and the greatest common divisor of polynomials. [Comparison_Sort_Lower_Bound] title = Lower bound on comparison-based sorting algorithms author = Manuel Eberl topic = Computer science/Algorithms date = 2017-03-15 notify = eberlm@in.tum.de abstract =

This article contains a formal proof of the well-known fact that number of comparisons that a comparison-based sorting algorithm needs to perform to sort a list of length n is at least log2 (n!) in the worst case, i. e. Ω(n log n).

For this purpose, a shallow embedding for comparison-based sorting algorithms is defined: a sorting algorithm is a recursive datatype containing either a HOL function or a query of a comparison oracle with a continuation containing the remaining computation. This makes it possible to force the algorithm to use only comparisons and to track the number of comparisons made.

[Quick_Sort_Cost] title = The number of comparisons in QuickSort author = Manuel Eberl topic = Computer science/Algorithms date = 2017-03-15 notify = eberlm@in.tum.de abstract =

We give a formal proof of the well-known results about the number of comparisons performed by two variants of QuickSort: first, the expected number of comparisons of randomised QuickSort (i. e. QuickSort with random pivot choice) is 2 (n+1) Hn - 4 n, which is asymptotically equivalent to 2 n ln n; second, the number of comparisons performed by the classic non-randomised QuickSort has the same distribution in the average case as the randomised one.

[Random_BSTs] title = Expected Shape of Random Binary Search Trees author = Manuel Eberl topic = Computer science/Data structures date = 2017-04-04 notify = eberlm@in.tum.de abstract =

This entry contains proofs for the textbook results about the distributions of the height and internal path length of random binary search trees (BSTs), i. e. BSTs that are formed by taking an empty BST and inserting elements from a fixed set in random order.

In particular, we prove a logarithmic upper bound on the expected height and the Θ(n log n) closed-form solution for the expected internal path length in terms of the harmonic numbers. We also show how the internal path length relates to the average-case cost of a lookup in a BST.

[Randomised_BSTs] title = Randomised Binary Search Trees author = Manuel Eberl topic = Computer science/Data structures date = 2018-10-19 notify = eberlm@in.tum.de abstract =

This work is a formalisation of the Randomised Binary Search Trees introduced by Martínez and Roura, including definitions and correctness proofs.

Like randomised treaps, they are a probabilistic data structure that behaves exactly as if elements were inserted into a non-balancing BST in random order. However, unlike treaps, they only use discrete probability distributions, but their use of randomness is more complicated.

[E_Transcendental] title = The Transcendence of e author = Manuel Eberl topic = Mathematics/Analysis, Mathematics/Number theory date = 2017-01-12 notify = eberlm@in.tum.de abstract =

This work contains a proof that Euler's number e is transcendental. The proof follows the standard approach of assuming that e is algebraic and then using a specific integer polynomial to derive two inconsistent bounds, leading to a contradiction.

This kind of approach can be found in many different sources; this formalisation mostly follows a PlanetMath article by Roger Lipsett.

[Pi_Transcendental] title = The Transcendence of π author = Manuel Eberl topic = Mathematics/Number theory date = 2018-09-28 notify = eberlm@in.tum.de abstract =

This entry shows the transcendence of π based on the classic proof using the fundamental theorem of symmetric polynomials first given by von Lindemann in 1882, but the formalisation mostly follows the version by Niven. The proof reuses much of the machinery developed in the AFP entry on the transcendence of e.

[DFS_Framework] title = A Framework for Verifying Depth-First Search Algorithms author = Peter Lammich , René Neumann notify = lammich@in.tum.de date = 2016-07-05 topic = Computer science/Algorithms/Graph abstract =

This entry presents a framework for the modular verification of DFS-based algorithms, which is described in our [CPP-2015] paper. It provides a generic DFS algorithm framework, that can be parameterized with user-defined actions on certain events (e.g. discovery of new node). It comes with an extensible library of invariants, which can be used to derive invariants of a specific parameterization. Using refinement techniques, efficient implementations of the algorithms can easily be derived. Here, the framework comes with templates for a recursive and a tail-recursive implementation, and also with several templates for implementing the data structures required by the DFS algorithm. Finally, this entry contains a set of re-usable DFS-based algorithms, which illustrate the application of the framework.

[CPP-2015] Peter Lammich, René Neumann: A Framework for Verifying Depth-First Search Algorithms. CPP 2015: 137-146

[Flow_Networks] title = Flow Networks and the Min-Cut-Max-Flow Theorem author = Peter Lammich , S. Reza Sefidgar <> topic = Mathematics/Graph theory date = 2017-06-01 notify = lammich@in.tum.de abstract = We present a formalization of flow networks and the Min-Cut-Max-Flow theorem. Our formal proof closely follows a standard textbook proof, and is accessible even without being an expert in Isabelle/HOL, the interactive theorem prover used for the formalization. [Prpu_Maxflow] title = Formalizing Push-Relabel Algorithms author = Peter Lammich , S. Reza Sefidgar <> topic = Computer science/Algorithms/Graph, Mathematics/Graph theory date = 2017-06-01 notify = lammich@in.tum.de abstract = We present a formalization of push-relabel algorithms for computing the maximum flow in a network. We start with Goldberg's et al.~generic push-relabel algorithm, for which we show correctness and the time complexity bound of O(V^2E). We then derive the relabel-to-front and FIFO implementation. Using stepwise refinement techniques, we derive an efficient verified implementation. Our formal proof of the abstract algorithms closely follows a standard textbook proof. It is accessible even without being an expert in Isabelle/HOL, the interactive theorem prover used for the formalization. [Buildings] title = Chamber Complexes, Coxeter Systems, and Buildings author = Jeremy Sylvestre notify = jeremy.sylvestre@ualberta.ca date = 2016-07-01 topic = Mathematics/Algebra, Mathematics/Geometry abstract = We provide a basic formal framework for the theory of chamber complexes and Coxeter systems, and for buildings as thick chamber complexes endowed with a system of apartments. Along the way, we develop some of the general theory of abstract simplicial complexes and of groups (relying on the group_add class for the basics), including free groups and group presentations, and their universal properties. The main results verified are that the deletion condition is both necessary and sufficient for a group with a set of generators of order two to be a Coxeter system, and that the apartments in a (thick) building are all uniformly Coxeter. [Algebraic_VCs] title = Program Construction and Verification Components Based on Kleene Algebra author = Victor B. F. Gomes , Georg Struth notify = victor.gomes@cl.cam.ac.uk, g.struth@sheffield.ac.uk date = 2016-06-18 topic = Mathematics/Algebra abstract = Variants of Kleene algebra support program construction and verification by algebraic reasoning. This entry provides a verification component for Hoare logic based on Kleene algebra with tests, verification components for weakest preconditions and strongest postconditions based on Kleene algebra with domain and a component for step-wise refinement based on refinement Kleene algebra with tests. In addition to these components for the partial correctness of while programs, a verification component for total correctness based on divergence Kleene algebras and one for (partial correctness) of recursive programs based on domain quantales are provided. Finally we have integrated memory models for programs with pointers and a program trace semantics into the weakest precondition component. [C2KA_DistributedSystems] title = Communicating Concurrent Kleene Algebra for Distributed Systems Specification author = Maxime Buyse , Jason Jaskolka topic = Computer science/Automata and formal languages, Mathematics/Algebra date = 2019-08-06 notify = maxime.buyse@polytechnique.edu, jason.jaskolka@carleton.ca abstract = Communicating Concurrent Kleene Algebra (C²KA) is a mathematical framework for capturing the communicating and concurrent behaviour of agents in distributed systems. It extends Hoare et al.'s Concurrent Kleene Algebra (CKA) with communication actions through the notions of stimuli and shared environments. C²KA has applications in studying system-level properties of distributed systems such as safety, security, and reliability. In this work, we formalize results about C²KA and its application for distributed systems specification. We first formalize the stimulus structure and behaviour structure (CKA). Next, we combine them to formalize C²KA and its properties. Then, we formalize notions and properties related to the topology of distributed systems and the potential for communication via stimuli and via shared environments of agents, all within the algebraic setting of C²KA. [Card_Equiv_Relations] title = Cardinality of Equivalence Relations author = Lukas Bulwahn notify = lukas.bulwahn@gmail.com date = 2016-05-24 topic = Mathematics/Combinatorics abstract = This entry provides formulae for counting the number of equivalence relations and partial equivalence relations over a finite carrier set with given cardinality. To count the number of equivalence relations, we provide bijections between equivalence relations and set partitions, and then transfer the main results of the two AFP entries, Cardinality of Set Partitions and Spivey's Generalized Recurrence for Bell Numbers, to theorems on equivalence relations. To count the number of partial equivalence relations, we observe that counting partial equivalence relations over a set A is equivalent to counting all equivalence relations over all subsets of the set A. From this observation and the results on equivalence relations, we show that the cardinality of partial equivalence relations over a finite set of cardinality n is equal to the n+1-th Bell number. [Twelvefold_Way] title = The Twelvefold Way author = Lukas Bulwahn topic = Mathematics/Combinatorics date = 2016-12-29 notify = lukas.bulwahn@gmail.com abstract = This entry provides all cardinality theorems of the Twelvefold Way. The Twelvefold Way systematically classifies twelve related combinatorial problems concerning two finite sets, which include counting permutations, combinations, multisets, set partitions and number partitions. This development builds upon the existing formal developments with cardinality theorems for those structures. It provides twelve bijections from the various structures to different equivalence classes on finite functions, and hence, proves cardinality formulae for these equivalence classes on finite functions. [Chord_Segments] title = Intersecting Chords Theorem author = Lukas Bulwahn notify = lukas.bulwahn@gmail.com date = 2016-10-11 topic = Mathematics/Geometry abstract = This entry provides a geometric proof of the intersecting chords theorem. The theorem states that when two chords intersect each other inside a circle, the products of their segments are equal. After a short review of existing proofs in the literature, I decided to use a proof approach that employs reasoning about lengths of line segments, the orthogonality of two lines and the Pythagoras Law. Hence, one can understand the formalized proof easily with the knowledge of a few general geometric facts that are commonly taught in high-school. This theorem is the 55th theorem of the Top 100 Theorems list. [Category3] title = Category Theory with Adjunctions and Limits author = Eugene W. Stark notify = stark@cs.stonybrook.edu date = 2016-06-26 topic = Mathematics/Category theory abstract =

This article attempts to develop a usable framework for doing category theory in Isabelle/HOL. Our point of view, which to some extent differs from that of the previous AFP articles on the subject, is to try to explore how category theory can be done efficaciously within HOL, rather than trying to match exactly the way things are done using a traditional approach. To this end, we define the notion of category in an "object-free" style, in which a category is represented by a single partial composition operation on arrows. This way of defining categories provides some advantages in the context of HOL, including the ability to avoid the use of records and the possibility of defining functors and natural transformations simply as certain functions on arrows, rather than as composite objects. We define various constructions associated with the basic notions, including: dual category, product category, functor category, discrete category, free category, functor composition, and horizontal and vertical composite of natural transformations. A "set category" locale is defined that axiomatizes the notion "category of all sets at a type and all functions between them," and a fairly extensive set of properties of set categories is derived from the locale assumptions. The notion of a set category is used to prove the Yoneda Lemma in a general setting of a category equipped with a "hom embedding," which maps arrows of the category to the "universe" of the set category. We also give a treatment of adjunctions, defining adjunctions via left and right adjoint functors, natural bijections between hom-sets, and unit and counit natural transformations, and showing the equivalence of these definitions. We also develop the theory of limits, including representations of functors, diagrams and cones, and diagonal functors. We show that right adjoint functors preserve limits, and that limits can be constructed via products and equalizers. We characterize the conditions under which limits exist in a set category. We also examine the case of limits in a functor category, ultimately culminating in a proof that the Yoneda embedding preserves limits.

Revisions made subsequent to the first version of this article added material on equivalence of categories, cartesian categories, categories with pullbacks, categories with finite limits, and cartesian closed categories. A construction was given of the category of hereditarily finite sets and functions between them, and it was shown that this category is cartesian closed.

extra-history = Change history: [2018-05-29]: Revised axioms for the category locale. Introduced notation for composition and "in hom". (revision 8318366d4575)
[2020-02-15]: Move ConcreteCategory.thy from Bicategory to Category3 and use it systematically. Make other minor improvements throughout. (revision a51840d36867)
[2020-07-10]: Added new material, mostly centered around cartesian categories. (revision 06640f317a79)
[2020-11-04]: Minor modifications and extensions made in conjunction with the addition of new material to Bicategory. (revision 472cb2268826)
[MonoidalCategory] title = Monoidal Categories author = Eugene W. Stark topic = Mathematics/Category theory date = 2017-05-04 notify = stark@cs.stonybrook.edu abstract =

Building on the formalization of basic category theory set out in the author's previous AFP article, the present article formalizes some basic aspects of the theory of monoidal categories. Among the notions defined here are monoidal category, monoidal functor, and equivalence of monoidal categories. The main theorems formalized are MacLane's coherence theorem and the constructions of the free monoidal category and free strict monoidal category generated by a given category. The coherence theorem is proved syntactically, using a structurally recursive approach to reduction of terms that might have some novel aspects. We also give proofs of some results given by Etingof et al, which may prove useful in a formal setting. In particular, we show that the left and right unitors need not be taken as given data in the definition of monoidal category, nor does the definition of monoidal functor need to take as given a specific isomorphism expressing the preservation of the unit object. Our definitions of monoidal category and monoidal functor are stated so as to take advantage of the economy afforded by these facts.

Revisions made subsequent to the first version of this article added material on cartesian monoidal categories; showing that the underlying category of a cartesian monoidal category is a cartesian category, and that every cartesian category extends to a cartesian monoidal category.

extra-history = Change history: [2017-05-18]: Integrated material from MonoidalCategory/Category3Adapter into Category3/ and deleted adapter. (revision 015543cdd069)
[2018-05-29]: Modifications required due to 'Category3' changes. Introduced notation for "in hom". (revision 8318366d4575)
[2020-02-15]: Cosmetic improvements. (revision a51840d36867)
[2020-07-10]: Added new material on cartesian monoidal categories. (revision 06640f317a79)
[Card_Multisets] title = Cardinality of Multisets author = Lukas Bulwahn notify = lukas.bulwahn@gmail.com date = 2016-06-26 topic = Mathematics/Combinatorics abstract =

This entry provides three lemmas to count the number of multisets of a given size and finite carrier set. The first lemma provides a cardinality formula assuming that the multiset's elements are chosen from the given carrier set. The latter two lemmas provide formulas assuming that the multiset's elements also cover the given carrier set, i.e., each element of the carrier set occurs in the multiset at least once.

The proof of the first lemma uses the argument of the recurrence relation for counting multisets. The proof of the second lemma is straightforward, and the proof of the third lemma is easily obtained using the first cardinality lemma. A challenge for the formalization is the derivation of the required induction rule, which is a special combination of the induction rules for finite sets and natural numbers. The induction rule is derived by defining a suitable inductive predicate and transforming the predicate's induction rule.

[Posix-Lexing] title = POSIX Lexing with Derivatives of Regular Expressions author = Fahad Ausaf , Roy Dyckhoff , Christian Urban notify = christian.urban@kcl.ac.uk date = 2016-05-24 topic = Computer science/Automata and formal languages abstract = Brzozowski introduced the notion of derivatives for regular expressions. They can be used for a very simple regular expression matching algorithm. Sulzmann and Lu cleverly extended this algorithm in order to deal with POSIX matching, which is the underlying disambiguation strategy for regular expressions needed in lexers. In this entry we give our inductive definition of what a POSIX value is and show (i) that such a value is unique (for given regular expression and string being matched) and (ii) that Sulzmann and Lu's algorithm always generates such a value (provided that the regular expression matches the string). We also prove the correctness of an optimised version of the POSIX matching algorithm. [LocalLexing] title = Local Lexing author = Steven Obua topic = Computer science/Automata and formal languages date = 2017-04-28 notify = steven@recursivemind.com abstract = This formalisation accompanies the paper Local Lexing which introduces a novel parsing concept of the same name. The paper also gives a high-level algorithm for local lexing as an extension of Earley's algorithm. This formalisation proves the algorithm to be correct with respect to its local lexing semantics. As a special case, this formalisation thus also contains a proof of the correctness of Earley's algorithm. The paper contains a short outline of how this formalisation is organised. [MFMC_Countable] title = A Formal Proof of the Max-Flow Min-Cut Theorem for Countable Networks author = Andreas Lochbihler date = 2016-05-09 topic = Mathematics/Graph theory abstract = This article formalises a proof of the maximum-flow minimal-cut theorem for networks with countably many edges. A network is a directed graph with non-negative real-valued edge labels and two dedicated vertices, the source and the sink. A flow in a network assigns non-negative real numbers to the edges such that for all vertices except for the source and the sink, the sum of values on incoming edges equals the sum of values on outgoing edges. A cut is a subset of the vertices which contains the source, but not the sink. Our theorem states that in every network, there is a flow and a cut such that the flow saturates all the edges going out of the cut and is zero on all the incoming edges. The proof is based on the paper The Max-Flow Min-Cut theorem for countable networks by Aharoni et al. Additionally, we prove a characterisation of the lifting operation for relations on discrete probability distributions, which leads to a concise proof of its distributivity over relation composition. notify = mail@andreas-lochbihler.de extra-history = Change history: [2017-09-06]: derive characterisation for the lifting operations on discrete distributions from finite version of the max-flow min-cut theorem (revision a7a198f5bab0)
[2020-12-19]: simpler proof of linkability for bounded unhindered bipartite webs, leading to a simpler proof for networks with bounded out-capacities (revision 93ca33f4d915)
[Liouville_Numbers] title = Liouville numbers author = Manuel Eberl date = 2015-12-28 topic = Mathematics/Analysis, Mathematics/Number theory abstract =

Liouville numbers are a class of transcendental numbers that can be approximated particularly well with rational numbers. Historically, they were the first numbers whose transcendence was proven.

In this entry, we define the concept of Liouville numbers as well as the standard construction to obtain Liouville numbers (including Liouville's constant) and we prove their most important properties: irrationality and transcendence.

The proof is very elementary and requires only standard arithmetic, the Mean Value Theorem for polynomials, and the boundedness of polynomials on compact intervals.

notify = eberlm@in.tum.de [Triangle] title = Basic Geometric Properties of Triangles author = Manuel Eberl date = 2015-12-28 topic = Mathematics/Geometry abstract =

This entry contains a definition of angles between vectors and between three points. Building on this, we prove basic geometric properties of triangles, such as the Isosceles Triangle Theorem, the Law of Sines and the Law of Cosines, that the sum of the angles of a triangle is π, and the congruence theorems for triangles.

The definitions and proofs were developed following those by John Harrison in HOL Light. However, due to Isabelle's type class system, all definitions and theorems in the Isabelle formalisation hold for all real inner product spaces.

notify = eberlm@in.tum.de [Prime_Harmonic_Series] title = The Divergence of the Prime Harmonic Series author = Manuel Eberl date = 2015-12-28 topic = Mathematics/Number theory abstract =

In this work, we prove the lower bound ln(H_n) - ln(5/3) for the partial sum of the Prime Harmonic series and, based on this, the divergence of the Prime Harmonic Series ∑[p prime] · 1/p.

The proof relies on the unique squarefree decomposition of natural numbers. This is similar to Euler's original proof (which was highly informal and morally questionable). Its advantage over proofs by contradiction, like the famous one by Paul Erdős, is that it provides a relatively good lower bound for the partial sums.

notify = eberlm@in.tum.de [Descartes_Sign_Rule] title = Descartes' Rule of Signs author = Manuel Eberl date = 2015-12-28 topic = Mathematics/Analysis abstract =

Descartes' Rule of Signs relates the number of positive real roots of a polynomial with the number of sign changes in its coefficient sequence.

Our proof follows the simple inductive proof given by Rob Arthan, which was also used by John Harrison in his HOL Light formalisation. We proved most of the lemmas for arbitrary linearly-ordered integrity domains (e.g. integers, rationals, reals); the main result, however, requires the intermediate value theorem and was therefore only proven for real polynomials.

notify = eberlm@in.tum.de [Euler_MacLaurin] title = The Euler–MacLaurin Formula author = Manuel Eberl topic = Mathematics/Analysis date = 2017-03-10 notify = eberlm@in.tum.de abstract =

The Euler-MacLaurin formula relates the value of a discrete sum to that of the corresponding integral in terms of the derivatives at the borders of the summation and a remainder term. Since the remainder term is often very small as the summation bounds grow, this can be used to compute asymptotic expansions for sums.

This entry contains a proof of this formula for functions from the reals to an arbitrary Banach space. Two variants of the formula are given: the standard textbook version and a variant outlined in Concrete Mathematics that is more useful for deriving asymptotic estimates.

As example applications, we use that formula to derive the full asymptotic expansion of the harmonic numbers and the sum of inverse squares.

[Card_Partitions] title = Cardinality of Set Partitions author = Lukas Bulwahn date = 2015-12-12 topic = Mathematics/Combinatorics abstract = The theory's main theorem states that the cardinality of set partitions of size k on a carrier set of size n is expressed by Stirling numbers of the second kind. In Isabelle, Stirling numbers of the second kind are defined in the AFP entry `Discrete Summation` through their well-known recurrence relation. The main theorem relates them to the alternative definition as cardinality of set partitions. The proof follows the simple and short explanation in Richard P. Stanley's `Enumerative Combinatorics: Volume 1` and Wikipedia, and unravels the full details and implicit reasoning steps of these explanations. notify = lukas.bulwahn@gmail.com [Card_Number_Partitions] title = Cardinality of Number Partitions author = Lukas Bulwahn date = 2016-01-14 topic = Mathematics/Combinatorics abstract = This entry provides a basic library for number partitions, defines the two-argument partition function through its recurrence relation and relates this partition function to the cardinality of number partitions. The main proof shows that the recursively-defined partition function with arguments n and k equals the cardinality of number partitions of n with exactly k parts. The combinatorial proof follows the proof sketch of Theorem 2.4.1 in Mazur's textbook `Combinatorics: A Guided Tour`. This entry can serve as starting point for various more intrinsic properties about number partitions, the partition function and related recurrence relations. notify = lukas.bulwahn@gmail.com [Multirelations] title = Binary Multirelations author = Hitoshi Furusawa , Georg Struth date = 2015-06-11 topic = Mathematics/Algebra abstract = Binary multirelations associate elements of a set with its subsets; hence they are binary relations from a set to its power set. Applications include alternating automata, models and logics for games, program semantics with dual demonic and angelic nondeterministic choices and concurrent dynamic logics. This proof document supports an arXiv article that formalises the basic algebra of multirelations and proposes axiom systems for them, ranging from weak bi-monoids to weak bi-quantales. notify = [Noninterference_Generic_Unwinding] title = The Generic Unwinding Theorem for CSP Noninterference Security author = Pasquale Noce date = 2015-06-11 topic = Computer science/Security, Computer science/Concurrency/Process calculi abstract =

The classical definition of noninterference security for a deterministic state machine with outputs requires to consider the outputs produced by machine actions after any trace, i.e. any indefinitely long sequence of actions, of the machine. In order to render the verification of the security of such a machine more straightforward, there is a need of some sufficient condition for security such that just individual actions, rather than unbounded sequences of actions, have to be considered.

By extending previous results applying to transitive noninterference policies, Rushby has proven an unwinding theorem that provides a sufficient condition of this kind in the general case of a possibly intransitive policy. This condition has to be satisfied by a generic function mapping security domains into equivalence relations over machine states.

An analogous problem arises for CSP noninterference security, whose definition requires to consider any possible future, i.e. any indefinitely long sequence of subsequent events and any indefinitely large set of refused events associated to that sequence, for each process trace.

This paper provides a sufficient condition for CSP noninterference security, which indeed requires to just consider individual accepted and refused events and applies to the general case of a possibly intransitive policy. This condition follows Rushby's one for classical noninterference security, and has to be satisfied by a generic function mapping security domains into equivalence relations over process traces; hence its name, Generic Unwinding Theorem. Variants of this theorem applying to deterministic processes and trace set processes are also proven. Finally, the sufficient condition for security expressed by the theorem is shown not to be a necessary condition as well, viz. there exists a secure process such that no domain-relation map satisfying the condition exists.

notify = [Noninterference_Ipurge_Unwinding] title = The Ipurge Unwinding Theorem for CSP Noninterference Security author = Pasquale Noce date = 2015-06-11 topic = Computer science/Security abstract =

The definition of noninterference security for Communicating Sequential Processes requires to consider any possible future, i.e. any indefinitely long sequence of subsequent events and any indefinitely large set of refused events associated to that sequence, for each process trace. In order to render the verification of the security of a process more straightforward, there is a need of some sufficient condition for security such that just individual accepted and refused events, rather than unbounded sequences and sets of events, have to be considered.

Of course, if such a sufficient condition were necessary as well, it would be even more valuable, since it would permit to prove not only that a process is secure by verifying that the condition holds, but also that a process is not secure by verifying that the condition fails to hold.

This paper provides a necessary and sufficient condition for CSP noninterference security, which indeed requires to just consider individual accepted and refused events and applies to the general case of a possibly intransitive policy. This condition follows Rushby's output consistency for deterministic state machines with outputs, and has to be satisfied by a specific function mapping security domains into equivalence relations over process traces. The definition of this function makes use of an intransitive purge function following Rushby's one; hence the name given to the condition, Ipurge Unwinding Theorem.

Furthermore, in accordance with Hoare's formal definition of deterministic processes, it is shown that a process is deterministic just in case it is a trace set process, i.e. it may be identified by means of a trace set alone, matching the set of its traces, in place of a failures-divergences pair. Then, variants of the Ipurge Unwinding Theorem are proven for deterministic processes and trace set processes.

notify = [Relational_Method] title = The Relational Method with Message Anonymity for the Verification of Cryptographic Protocols author = Pasquale Noce topic = Computer science/Security date = 2020-12-05 notify = pasquale.noce.lavoro@gmail.com abstract = This paper introduces a new method for the formal verification of cryptographic protocols, the relational method, derived from Paulson's inductive method by means of some enhancements aimed at streamlining formal definitions and proofs, specially for protocols using public key cryptography. Moreover, this paper proposes a method to formalize a further security property, message anonymity, in addition to message confidentiality and authenticity. The relational method, including message anonymity, is then applied to the verification of a sample authentication protocol, comprising Password Authenticated Connection Establishment (PACE) with Chip Authentication Mapping followed by the explicit verification of an additional password over the PACE secure channel. [List_Interleaving] title = Reasoning about Lists via List Interleaving author = Pasquale Noce date = 2015-06-11 topic = Computer science/Data structures abstract =

Among the various mathematical tools introduced in his outstanding work on Communicating Sequential Processes, Hoare has defined "interleaves" as the predicate satisfied by any three lists such that the first list may be split into sublists alternately extracted from the other two ones, whatever is the criterion for extracting an item from either one list or the other in each step.

This paper enriches Hoare's definition by identifying such criterion with the truth value of a predicate taking as inputs the head and the tail of the first list. This enhanced "interleaves" predicate turns out to permit the proof of equalities between lists without the need of an induction. Some rules that allow to infer "interleaves" statements without induction, particularly applying to the addition or removal of a prefix to the input lists, are also proven. Finally, a stronger version of the predicate, named "Interleaves", is shown to fulfil further rules applying to the addition or removal of a suffix to the input lists.

notify = [Residuated_Lattices] title = Residuated Lattices author = Victor B. F. Gomes , Georg Struth date = 2015-04-15 topic = Mathematics/Algebra abstract = The theory of residuated lattices, first proposed by Ward and Dilworth, is formalised in Isabelle/HOL. This includes concepts of residuated functions; their adjoints and conjugates. It also contains necessary and sufficient conditions for the existence of these operations in an arbitrary lattice. The mathematical components for residuated lattices are linked to the AFP entry for relation algebra. In particular, we prove Jonsson and Tsinakis conditions for a residuated boolean algebra to form a relation algebra. notify = g.struth@sheffield.ac.uk [ConcurrentGC] title = Relaxing Safely: Verified On-the-Fly Garbage Collection for x86-TSO author = Peter Gammie , Tony Hosking , Kai Engelhardt <> date = 2015-04-13 topic = Computer science/Algorithms/Concurrent abstract =

We use ConcurrentIMP to model Schism, a state-of-the-art real-time garbage collection scheme for weak memory, and show that it is safe on x86-TSO.

This development accompanies the PLDI 2015 paper of the same name.

notify = peteg42@gmail.com [List_Update] title = Analysis of List Update Algorithms author = Maximilian P.L. Haslbeck , Tobias Nipkow date = 2016-02-17 topic = Computer science/Algorithms/Online abstract =

These theories formalize the quantitative analysis of a number of classical algorithms for the list update problem: 2-competitiveness of move-to-front, the lower bound of 2 for the competitiveness of deterministic list update algorithms and 1.6-competitiveness of the randomized COMB algorithm, the best randomized list update algorithm known to date. The material is based on the first two chapters of Online Computation and Competitive Analysis by Borodin and El-Yaniv.

For an informal description see the FSTTCS 2016 publication Verified Analysis of List Update Algorithms by Haslbeck and Nipkow.

notify = nipkow@in.tum.de [ConcurrentIMP] title = Concurrent IMP author = Peter Gammie date = 2015-04-13 topic = Computer science/Programming languages/Logics abstract = ConcurrentIMP extends the small imperative language IMP with control non-determinism and constructs for synchronous message passing. notify = peteg42@gmail.com [TortoiseHare] title = The Tortoise and Hare Algorithm author = Peter Gammie date = 2015-11-18 topic = Computer science/Algorithms abstract = We formalize the Tortoise and Hare cycle-finding algorithm ascribed to Floyd by Knuth, and an improved version due to Brent. notify = peteg42@gmail.com [UPF] title = The Unified Policy Framework (UPF) author = Achim D. Brucker , Lukas Brügger , Burkhart Wolff date = 2014-11-28 topic = Computer science/Security abstract = We present the Unified Policy Framework (UPF), a generic framework for modelling security (access-control) policies. UPF emphasizes the view that a policy is a policy decision function that grants or denies access to resources, permissions, etc. In other words, instead of modelling the relations of permitted or prohibited requests directly, we model the concrete function that implements the policy decision point in a system. In more detail, UPF is based on the following four principles: 1) Functional representation of policies, 2) No conflicts are possible, 3) Three-valued decision type (allow, deny, undefined), 4) Output type not containing the decision only. notify = adbrucker@0x5f.org, wolff@lri.fr, lukas.a.bruegger@gmail.com [UPF_Firewall] title = Formal Network Models and Their Application to Firewall Policies author = Achim D. Brucker , Lukas Brügger<>, Burkhart Wolff topic = Computer science/Security, Computer science/Networks date = 2017-01-08 notify = adbrucker@0x5f.org abstract = We present a formal model of network protocols and their application to modeling firewall policies. The formalization is based on the Unified Policy Framework (UPF). The formalization was originally developed with for generating test cases for testing the security configuration actual firewall and router (middle-boxes) using HOL-TestGen. Our work focuses on modeling application level protocols on top of tcp/ip. [AODV] title = Loop freedom of the (untimed) AODV routing protocol author = Timothy Bourke , Peter Höfner date = 2014-10-23 topic = Computer science/Concurrency/Process calculi abstract =

The Ad hoc On-demand Distance Vector (AODV) routing protocol allows the nodes in a Mobile Ad hoc Network (MANET) or a Wireless Mesh Network (WMN) to know where to forward data packets. Such a protocol is ‘loop free’ if it never leads to routing decisions that forward packets in circles.

This development mechanises an existing pen-and-paper proof of loop freedom of AODV. The protocol is modelled in the Algebra of Wireless Networks (AWN), which is the subject of an earlier paper and AFP mechanization. The proof relies on a novel compositional approach for lifting invariants to networks of nodes.

We exploit the mechanization to analyse several variants of AODV and show that Isabelle/HOL can re-establish most proof obligations automatically and identify exactly the steps that are no longer valid.

notify = tim@tbrk.org [Show] title = Haskell's Show Class in Isabelle/HOL author = Christian Sternagel , René Thiemann date = 2014-07-29 topic = Computer science/Functional programming license = LGPL abstract = We implemented a type class for "to-string" functions, similar to Haskell's Show class. Moreover, we provide instantiations for Isabelle/HOL's standard types like bool, prod, sum, nats, ints, and rats. It is further possible, to automatically derive show functions for arbitrary user defined datatypes similar to Haskell's "deriving Show". extra-history = Change history: [2015-03-11]: Adapted development to new-style (BNF-based) datatypes.
[2015-04-10]: Moved development for old-style datatypes into subdirectory "Old_Datatype".
notify = christian.sternagel@uibk.ac.at, rene.thiemann@uibk.ac.at [Certification_Monads] title = Certification Monads author = Christian Sternagel , René Thiemann date = 2014-10-03 topic = Computer science/Functional programming abstract = This entry provides several monads intended for the development of stand-alone certifiers via code generation from Isabelle/HOL. More specifically, there are three flavors of error monads (the sum type, for the case where all monadic functions are total; an instance of the former, the so called check monad, yielding either success without any further information or an error message; as well as a variant of the sum type that accommodates partial functions by providing an explicit bottom element) and a parser monad built on top. All of this monads are heavily used in the IsaFoR/CeTA project which thus provides many examples of their usage. notify = c.sternagel@gmail.com, rene.thiemann@uibk.ac.at [CISC-Kernel] title = Formal Specification of a Generic Separation Kernel author = Freek Verbeek , Sergey Tverdyshev , Oto Havle , Holger Blasum , Bruno Langenstein , Werner Stephan , Yakoub Nemouchi , Abderrahmane Feliachi , Burkhart Wolff , Julien Schmaltz date = 2014-07-18 topic = Computer science/Security abstract =

Intransitive noninterference has been a widely studied topic in the last few decades. Several well-established methodologies apply interactive theorem proving to formulate a noninterference theorem over abstract academic models. In joint work with several industrial and academic partners throughout Europe, we are helping in the certification process of PikeOS, an industrial separation kernel developed at SYSGO. In this process, established theories could not be applied. We present a new generic model of separation kernels and a new theory of intransitive noninterference. The model is rich in detail, making it suitable for formal verification of realistic and industrial systems such as PikeOS. Using a refinement-based theorem proving approach, we ensure that proofs remain manageable.

This document corresponds to the deliverable D31.1 of the EURO-MILS Project http://www.euromils.eu.

notify = [pGCL] title = pGCL for Isabelle author = David Cock date = 2014-07-13 topic = Computer science/Programming languages/Language definitions abstract =

pGCL is both a programming language and a specification language that incorporates both probabilistic and nondeterministic choice, in a unified manner. Program verification is by refinement or annotation (or both), using either Hoare triples, or weakest-precondition entailment, in the style of GCL.

This package provides both a shallow embedding of the language primitives, and an annotation and refinement framework. The generated document includes a brief tutorial.

notify = [Noninterference_CSP] title = Noninterference Security in Communicating Sequential Processes author = Pasquale Noce date = 2014-05-23 topic = Computer science/Security abstract =

An extension of classical noninterference security for deterministic state machines, as introduced by Goguen and Meseguer and elegantly formalized by Rushby, to nondeterministic systems should satisfy two fundamental requirements: it should be based on a mathematically precise theory of nondeterminism, and should be equivalent to (or at least not weaker than) the classical notion in the degenerate deterministic case.

This paper proposes a definition of noninterference security applying to Hoare's Communicating Sequential Processes (CSP) in the general case of a possibly intransitive noninterference policy, and proves the equivalence of this security property to classical noninterference security for processes representing deterministic state machines.

Furthermore, McCullough's generalized noninterference security is shown to be weaker than both the proposed notion of CSP noninterference security for a generic process, and classical noninterference security for processes representing deterministic state machines. This renders CSP noninterference security preferable as an extension of classical noninterference security to nondeterministic systems.

notify = pasquale.noce.lavoro@gmail.com [Floyd_Warshall] title = The Floyd-Warshall Algorithm for Shortest Paths author = Simon Wimmer , Peter Lammich topic = Computer science/Algorithms/Graph date = 2017-05-08 notify = wimmers@in.tum.de abstract = The Floyd-Warshall algorithm [Flo62, Roy59, War62] is a classic dynamic programming algorithm to compute the length of all shortest paths between any two vertices in a graph (i.e. to solve the all-pairs shortest path problem, or APSP for short). Given a representation of the graph as a matrix of weights M, it computes another matrix M' which represents a graph with the same path lengths and contains the length of the shortest path between any two vertices i and j. This is only possible if the graph does not contain any negative cycles. However, in this case the Floyd-Warshall algorithm will detect the situation by calculating a negative diagonal entry. This entry includes a formalization of the algorithm and of these key properties. The algorithm is refined to an efficient imperative version using the Imperative Refinement Framework. [Roy_Floyd_Warshall] title = Transitive closure according to Roy-Floyd-Warshall author = Makarius Wenzel <> date = 2014-05-23 topic = Computer science/Algorithms/Graph abstract = This formulation of the Roy-Floyd-Warshall algorithm for the transitive closure bypasses matrices and arrays, but uses a more direct mathematical model with adjacency functions for immediate predecessors and successors. This can be implemented efficiently in functional programming languages and is particularly adequate for sparse relations. notify = [GPU_Kernel_PL] title = Syntax and semantics of a GPU kernel programming language author = John Wickerson date = 2014-04-03 topic = Computer science/Programming languages/Language definitions abstract = This document accompanies the article "The Design and Implementation of a Verification Technique for GPU Kernels" by Adam Betts, Nathan Chong, Alastair F. Donaldson, Jeroen Ketema, Shaz Qadeer, Paul Thomson and John Wickerson. It formalises all of the definitions provided in Sections 3 and 4 of the article. notify = [AWN] title = Mechanization of the Algebra for Wireless Networks (AWN) author = Timothy Bourke date = 2014-03-08 topic = Computer science/Concurrency/Process calculi abstract =

AWN is a process algebra developed for modelling and analysing protocols for Mobile Ad hoc Networks (MANETs) and Wireless Mesh Networks (WMNs). AWN models comprise five distinct layers: sequential processes, local parallel compositions, nodes, partial networks, and complete networks.

This development mechanises the original operational semantics of AWN and introduces a variant 'open' operational semantics that enables the compositional statement and proof of invariants across distinct network nodes. It supports labels (for weakening invariants) and (abstract) data state manipulations. A framework for compositional invariant proofs is developed, including a tactic (inv_cterms) for inductive invariant proofs of sequential processes, lifting rules for the open versions of the higher layers, and a rule for transferring lifted properties back to the standard semantics. A notion of 'control terms' reduces proof obligations to the subset of subterms that act directly (in contrast to operators for combining terms and joining processes).

notify = tim@tbrk.org [Selection_Heap_Sort] title = Verification of Selection and Heap Sort Using Locales author = Danijela Petrovic date = 2014-02-11 topic = Computer science/Algorithms abstract = Stepwise program refinement techniques can be used to simplify program verification. Programs are better understood since their main properties are clearly stated, and verification of rather complex algorithms is reduced to proving simple statements connecting successive program specifications. Additionally, it is easy to analyze similar algorithms and to compare their properties within a single formalization. Usually, formal analysis is not done in educational setting due to complexity of verification and a lack of tools and procedures to make comparison easy. Verification of an algorithm should not only give correctness proof, but also better understanding of an algorithm. If the verification is based on small step program refinement, it can become simple enough to be demonstrated within the university-level computer science curriculum. In this paper we demonstrate this and give a formal analysis of two well known algorithms (Selection Sort and Heap Sort) using proof assistant Isabelle/HOL and program refinement techniques. notify = [Real_Impl] title = Implementing field extensions of the form Q[sqrt(b)] author = René Thiemann date = 2014-02-06 license = LGPL topic = Mathematics/Analysis abstract = We apply data refinement to implement the real numbers, where we support all numbers in the field extension Q[sqrt(b)], i.e., all numbers of the form p + q * sqrt(b) for rational numbers p and q and some fixed natural number b. To this end, we also developed algorithms to precisely compute roots of a rational number, and to perform a factorization of natural numbers which eliminates duplicate prime factors.

Our results have been used to certify termination proofs which involve polynomial interpretations over the reals. extra-history = Change history: [2014-07-11]: Moved NthRoot_Impl to Sqrt-Babylonian. notify = rene.thiemann@uibk.ac.at [ShortestPath] title = An Axiomatic Characterization of the Single-Source Shortest Path Problem author = Christine Rizkallah date = 2013-05-22 topic = Mathematics/Graph theory abstract = This theory is split into two sections. In the first section, we give a formal proof that a well-known axiomatic characterization of the single-source shortest path problem is correct. Namely, we prove that in a directed graph with a non-negative cost function on the edges the single-source shortest path function is the only function that satisfies a set of four axioms. In the second section, we give a formal proof of the correctness of an axiomatic characterization of the single-source shortest path problem for directed graphs with general cost functions. The axioms here are more involved because we have to account for potential negative cycles in the graph. The axioms are summarized in three Isabelle locales. notify = [Launchbury] title = The Correctness of Launchbury's Natural Semantics for Lazy Evaluation author = Joachim Breitner date = 2013-01-31 topic = Computer science/Programming languages/Lambda calculi, Computer science/Semantics abstract = In his seminal paper "Natural Semantics for Lazy Evaluation", John Launchbury proves his semantics correct with respect to a denotational semantics, and outlines an adequacy proof. We have formalized both semantics and machine-checked the correctness proof, clarifying some details. Furthermore, we provide a new and more direct adequacy proof that does not require intermediate operational semantics. extra-history = Change history: [2014-05-24]: Added the proof of adequacy, as well as simplified and improved the existing proofs. Adjusted abstract accordingly. [2015-03-16]: Booleans and if-then-else added to syntax and semantics, making this entry suitable to be used by the entry "Call_Arity". notify = [Call_Arity] title = The Safety of Call Arity author = Joachim Breitner date = 2015-02-20 topic = Computer science/Programming languages/Transformations abstract = We formalize the Call Arity analysis, as implemented in GHC, and prove both functional correctness and, more interestingly, safety (i.e. the transformation does not increase allocation).

We use syntax and the denotational semantics from the entry "Launchbury", where we formalized Launchbury's natural semantics for lazy evaluation.

The functional correctness of Call Arity is proved with regard to that denotational semantics. The operational properties are shown with regard to a small-step semantics akin to Sestoft's mark 1 machine, which we prove to be equivalent to Launchbury's semantics.

We use Christian Urban's Nominal2 package to define our terms and make use of Brian Huffman's HOLCF package for the domain-theoretical aspects of the development. extra-history = Change history: [2015-03-16]: This entry now builds on top of the Launchbury entry, and the equivalency proof of the natural and the small-step semantics was added. notify = [CCS] title = CCS in nominal logic author = Jesper Bengtson date = 2012-05-29 topic = Computer science/Concurrency/Process calculi abstract = We formalise a large portion of CCS as described in Milner's book 'Communication and Concurrency' using the nominal datatype package in Isabelle. Our results include many of the standard theorems of bisimulation equivalence and congruence, for both weak and strong versions. One main goal of this formalisation is to keep the machine-checked proofs as close to their pen-and-paper counterpart as possible.

This entry is described in detail in Bengtson's thesis. notify = [Pi_Calculus] title = The pi-calculus in nominal logic author = Jesper Bengtson date = 2012-05-29 topic = Computer science/Concurrency/Process calculi abstract = We formalise the pi-calculus using the nominal datatype package, based on ideas from the nominal logic by Pitts et al., and demonstrate an implementation in Isabelle/HOL. The purpose is to derive powerful induction rules for the semantics in order to conduct machine checkable proofs, closely following the intuitive arguments found in manual proofs. In this way we have covered many of the standard theorems of bisimulation equivalence and congruence, both late and early, and both strong and weak in a uniform manner. We thus provide one of the most extensive formalisations of a the pi-calculus ever done inside a theorem prover.

A significant gain in our formulation is that agents are identified up to alpha-equivalence, thereby greatly reducing the arguments about bound names. This is a normal strategy for manual proofs about the pi-calculus, but that kind of hand waving has previously been difficult to incorporate smoothly in an interactive theorem prover. We show how the nominal logic formalism and its support in Isabelle accomplishes this and thus significantly reduces the tedium of conducting completely formal proofs. This improves on previous work using weak higher order abstract syntax since we do not need extra assumptions to filter out exotic terms and can keep all arguments within a familiar first-order logic.

This entry is described in detail in Bengtson's thesis. notify = [Psi_Calculi] title = Psi-calculi in Isabelle author = Jesper Bengtson date = 2012-05-29 topic = Computer science/Concurrency/Process calculi abstract = Psi-calculi are extensions of the pi-calculus, accommodating arbitrary nominal datatypes to represent not only data but also communication channels, assertions and conditions, giving it an expressive power beyond the applied pi-calculus and the concurrent constraint pi-calculus.

We have formalised psi-calculi in the interactive theorem prover Isabelle using its nominal datatype package. One distinctive feature is that the framework needs to treat binding sequences, as opposed to single binders, in an efficient way. While different methods for formalising single binder calculi have been proposed over the last decades, representations for such binding sequences are not very well explored.

The main effort in the formalisation is to keep the machine checked proofs as close to their pen-and-paper counterparts as possible. This includes treating all binding sequences as atomic elements, and creating custom induction and inversion rules that to remove the bulk of manual alpha-conversions.

This entry is described in detail in Bengtson's thesis. notify = [Encodability_Process_Calculi] title = Analysing and Comparing Encodability Criteria for Process Calculi author = Kirstin Peters , Rob van Glabbeek date = 2015-08-10 topic = Computer science/Concurrency/Process calculi abstract = Encodings or the proof of their absence are the main way to compare process calculi. To analyse the quality of encodings and to rule out trivial or meaningless encodings, they are augmented with quality criteria. There exists a bunch of different criteria and different variants of criteria in order to reason in different settings. This leads to incomparable results. Moreover it is not always clear whether the criteria used to obtain a result in a particular setting do indeed fit to this setting. We show how to formally reason about and compare encodability criteria by mapping them on requirements on a relation between source and target terms that is induced by the encoding function. In particular we analyse the common criteria full abstraction, operational correspondence, divergence reflection, success sensitiveness, and respect of barbs; e.g. we analyse the exact nature of the simulation relation (coupled simulation versus bisimulation) that is induced by different variants of operational correspondence. This way we reduce the problem of analysing or comparing encodability criteria to the better understood problem of comparing relations on processes. notify = kirstin.peters@tu-berlin.de [Circus] title = Isabelle/Circus author = Abderrahmane Feliachi , Burkhart Wolff , Marie-Claude Gaudel contributors = Makarius Wenzel date = 2012-05-27 topic = Computer science/Concurrency/Process calculi, Computer science/System description languages abstract = The Circus specification language combines elements for complex data and behavior specifications, using an integration of Z and CSP with a refinement calculus. Its semantics is based on Hoare and He's Unifying Theories of Programming (UTP). Isabelle/Circus is a formalization of the UTP and the Circus language in Isabelle/HOL. It contains proof rules and tactic support that allows for proofs of refinement for Circus processes (involving both data and behavioral aspects).

The Isabelle/Circus environment supports a syntax for the semantic definitions which is close to textbook presentations of Circus. This article contains an extended version of corresponding VSTTE Paper together with the complete formal development of its underlying commented theories. extra-history = Change history: [2014-06-05]: More polishing, shorter proofs, added Circus syntax, added Makarius Wenzel as contributor. notify = [Dijkstra_Shortest_Path] title = Dijkstra's Shortest Path Algorithm author = Benedikt Nordhoff , Peter Lammich topic = Computer science/Algorithms/Graph date = 2012-01-30 abstract = We implement and prove correct Dijkstra's algorithm for the single source shortest path problem, conceived in 1956 by E. Dijkstra. The algorithm is implemented using the data refinement framework for monadic, nondeterministic programs. An efficient implementation is derived using data structures from the Isabelle Collection Framework. notify = lammich@in.tum.de [Refine_Monadic] title = Refinement for Monadic Programs author = Peter Lammich topic = Computer science/Programming languages/Logics date = 2012-01-30 abstract = We provide a framework for program and data refinement in Isabelle/HOL. The framework is based on a nondeterminism-monad with assertions, i.e., the monad carries a set of results or an assertion failure. Recursion is expressed by fixed points. For convenience, we also provide while and foreach combinators.

The framework provides tools to automatize canonical tasks, such as verification condition generation, finding appropriate data refinement relations, and refine an executable program to a form that is accepted by the Isabelle/HOL code generator.

This submission comes with a collection of examples and a user-guide, illustrating the usage of the framework. extra-history = Change history: [2012-04-23] Introduced ordered FOREACH loops
[2012-06] New features: REC_rule_arb and RECT_rule_arb allow for generalizing over variables. prepare_code_thms - command extracts code equations for recursion combinators.
[2012-07] New example: Nested DFS for emptiness check of Buchi-automata with witness.
New feature: fo_rule method to apply resolution using first-order matching. Useful for arg_conf, fun_cong.
[2012-08] Adaptation to ICF v2.
[2012-10-05] Adaptations to include support for Automatic Refinement Framework.
[2013-09] This entry now depends on Automatic Refinement
[2014-06] New feature: vc_solve method to solve verification conditions. Maintenace changes: VCG-rules for nfoldli, improved setup for FOREACH-loops.
[2014-07] Now defining recursion via flat domain. Dropped many single-valued prerequisites. Changed notion of data refinement. In single-valued case, this matches the old notion. In non-single valued case, the new notion allows for more convenient rules. In particular, the new definitions allow for projecting away ghost variables as a refinement step.
[2014-11] New features: le-or-fail relation (leof), modular reasoning about loop invariants. notify = lammich@in.tum.de [Refine_Imperative_HOL] title = The Imperative Refinement Framework author = Peter Lammich notify = lammich@in.tum.de date = 2016-08-08 topic = Computer science/Programming languages/Transformations,Computer science/Data structures abstract = We present the Imperative Refinement Framework (IRF), a tool that supports a stepwise refinement based approach to imperative programs. This entry is based on the material we presented in [ITP-2015, CPP-2016]. It uses the Monadic Refinement Framework as a frontend for the specification of the abstract programs, and Imperative/HOL as a backend to generate executable imperative programs. The IRF comes with tool support to synthesize imperative programs from more abstract, functional ones, using efficient imperative implementations for the abstract data structures. This entry also includes the Imperative Isabelle Collection Framework (IICF), which provides a library of re-usable imperative collection data structures. Moreover, this entry contains a quickstart guide and a reference manual, which provide an introduction to using the IRF for Isabelle/HOL experts. It also provids a collection of (partly commented) practical examples, some highlights being Dijkstra's Algorithm, Nested-DFS, and a generic worklist algorithm with subsumption. Finally, this entry contains benchmark scripts that compare the runtime of some examples against reference implementations of the algorithms in Java and C++. [ITP-2015] Peter Lammich: Refinement to Imperative/HOL. ITP 2015: 253--269 [CPP-2016] Peter Lammich: Refinement based verification of imperative data structures. CPP 2016: 27--36 [Automatic_Refinement] title = Automatic Data Refinement author = Peter Lammich topic = Computer science/Programming languages/Logics date = 2013-10-02 abstract = We present the Autoref tool for Isabelle/HOL, which automatically refines algorithms specified over abstract concepts like maps and sets to algorithms over concrete implementations like red-black-trees, and produces a refinement theorem. It is based on ideas borrowed from relational parametricity due to Reynolds and Wadler. The tool allows for rapid prototyping of verified, executable algorithms. Moreover, it can be configured to fine-tune the result to the user~s needs. Our tool is able to automatically instantiate generic algorithms, which greatly simplifies the implementation of executable data structures.

This AFP-entry provides the basic tool, which is then used by the Refinement and Collection Framework to provide automatic data refinement for the nondeterminism monad and various collection datastructures. notify = lammich@in.tum.de [EdmondsKarp_Maxflow] title = Formalizing the Edmonds-Karp Algorithm author = Peter Lammich , S. Reza Sefidgar<> notify = lammich@in.tum.de date = 2016-08-12 topic = Computer science/Algorithms/Graph abstract = We present a formalization of the Ford-Fulkerson method for computing the maximum flow in a network. Our formal proof closely follows a standard textbook proof, and is accessible even without being an expert in Isabelle/HOL--- the interactive theorem prover used for the formalization. We then use stepwise refinement to obtain the Edmonds-Karp algorithm, and formally prove a bound on its complexity. Further refinement yields a verified implementation, whose execution time compares well to an unverified reference implementation in Java. This entry is based on our ITP-2016 paper with the same title. [VerifyThis2018] title = VerifyThis 2018 - Polished Isabelle Solutions author = Peter Lammich , Simon Wimmer topic = Computer science/Algorithms date = 2018-04-27 notify = lammich@in.tum.de abstract = VerifyThis 2018 was a program verification competition associated with ETAPS 2018. It was the 7th event in the VerifyThis competition series. In this entry, we present polished and completed versions of our solutions that we created during the competition. [PseudoHoops] title = Pseudo Hoops author = George Georgescu <>, Laurentiu Leustean <>, Viorel Preoteasa topic = Mathematics/Algebra date = 2011-09-22 abstract = Pseudo-hoops are algebraic structures introduced by B. Bosbach under the name of complementary semigroups. In this formalization we prove some properties of pseudo-hoops and we define the basic concepts of filter and normal filter. The lattice of normal filters is isomorphic with the lattice of congruences of a pseudo-hoop. We also study some important classes of pseudo-hoops. Bounded Wajsberg pseudo-hoops are equivalent to pseudo-Wajsberg algebras and bounded basic pseudo-hoops are equivalent to pseudo-BL algebras. Some examples of pseudo-hoops are given in the last section of the formalization. notify = viorel.preoteasa@aalto.fi [MonoBoolTranAlgebra] title = Algebra of Monotonic Boolean Transformers author = Viorel Preoteasa topic = Computer science/Programming languages/Logics date = 2011-09-22 abstract = Algebras of imperative programming languages have been successful in reasoning about programs. In general an algebra of programs is an algebraic structure with programs as elements and with program compositions (sequential composition, choice, skip) as algebra operations. Various versions of these algebras were introduced to model partial correctness, total correctness, refinement, demonic choice, and other aspects. We formalize here an algebra which can be used to model total correctness, refinement, demonic and angelic choice. The basic model of this algebra are monotonic Boolean transformers (monotonic functions from a Boolean algebra to itself). notify = viorel.preoteasa@aalto.fi [LatticeProperties] title = Lattice Properties author = Viorel Preoteasa topic = Mathematics/Order date = 2011-09-22 abstract = This formalization introduces and collects some algebraic structures based on lattices and complete lattices for use in other developments. The structures introduced are modular, and lattice ordered groups. In addition to the results proved for the new lattices, this formalization also introduces theorems about latices and complete lattices in general. extra-history = Change history: [2012-01-05]: Removed the theory about distributive complete lattices which is in the standard library now. Added a theory about well founded and transitive relations and a result about fixpoints in complete lattices and well founded relations. Moved the results about conjunctive and disjunctive functions to a new theory. Removed the syntactic classes for inf and sup which are in the standard library now. notify = viorel.preoteasa@aalto.fi [Impossible_Geometry] title = Proving the Impossibility of Trisecting an Angle and Doubling the Cube author = Ralph Romanos , Lawrence C. Paulson topic = Mathematics/Algebra, Mathematics/Geometry date = 2012-08-05 abstract = Squaring the circle, doubling the cube and trisecting an angle, using a compass and straightedge alone, are classic unsolved problems first posed by the ancient Greeks. All three problems were proved to be impossible in the 19th century. The following document presents the proof of the impossibility of solving the latter two problems using Isabelle/HOL, following a proof by Carrega. The proof uses elementary methods: no Galois theory or field extensions. The set of points constructible using a compass and straightedge is defined inductively. Radical expressions, which involve only square roots and arithmetic of rational numbers, are defined, and we find that all constructive points have radical coordinates. Finally, doubling the cube and trisecting certain angles requires solving certain cubic equations that can be proved to have no rational roots. The Isabelle proofs require a great many detailed calculations. notify = ralph.romanos@student.ecp.fr, lp15@cam.ac.uk [IP_Addresses] title = IP Addresses author = Cornelius Diekmann , Julius Michaelis , Lars Hupel notify = diekmann@net.in.tum.de date = 2016-06-28 topic = Computer science/Networks abstract = This entry contains a definition of IP addresses and a library to work with them. Generic IP addresses are modeled as machine words of arbitrary length. Derived from this generic definition, IPv4 addresses are 32bit machine words, IPv6 addresses are 128bit words. Additionally, IPv4 addresses can be represented in dot-decimal notation and IPv6 addresses in (compressed) colon-separated notation. We support toString functions and parsers for both notations. Sets of IP addresses can be represented with a netmask (e.g. 192.168.0.0/255.255.0.0) or in CIDR notation (e.g. 192.168.0.0/16). To provide executable code for set operations on IP address ranges, the library includes a datatype to work on arbitrary intervals of machine words. [Simple_Firewall] title = Simple Firewall author = Cornelius Diekmann , Julius Michaelis , Maximilian Haslbeck notify = diekmann@net.in.tum.de, max.haslbeck@gmx.de date = 2016-08-24 topic = Computer science/Networks abstract = We present a simple model of a firewall. The firewall can accept or drop a packet and can match on interfaces, IP addresses, protocol, and ports. It was designed to feature nice mathematical properties: The type of match expressions was carefully crafted such that the conjunction of two match expressions is only one match expression. This model is too simplistic to mirror all aspects of the real world. In the upcoming entry "Iptables Semantics", we will translate the Linux firewall iptables to this model. For a fixed service (e.g. ssh, http), we provide an algorithm to compute an overview of the firewall's filtering behavior. The algorithm computes minimal service matrices, i.e. graphs which partition the complete IPv4 and IPv6 address space and visualize the allowed accesses between partitions. For a detailed description, see Verified iptables Firewall Analysis, IFIP Networking 2016. [Iptables_Semantics] title = Iptables Semantics author = Cornelius Diekmann , Lars Hupel notify = diekmann@net.in.tum.de, hupel@in.tum.de date = 2016-09-09 topic = Computer science/Networks abstract = We present a big step semantics of the filtering behavior of the Linux/netfilter iptables firewall. We provide algorithms to simplify complex iptables rulests to a simple firewall model (c.f. AFP entry Simple_Firewall) and to verify spoofing protection of a ruleset. Internally, we embed our semantics into ternary logic, ultimately supporting every iptables match condition by abstracting over unknowns. Using this AFP entry and all entries it depends on, we created an easy-to-use, stand-alone haskell tool called fffuu. The tool does not require any input —except for the iptables-save dump of the analyzed firewall— and presents interesting results about the user's ruleset. Real-Word firewall errors have been uncovered, and the correctness of rulesets has been proved, with the help of our tool. [Routing] title = Routing author = Julius Michaelis , Cornelius Diekmann notify = afp@liftm.de date = 2016-08-31 topic = Computer science/Networks abstract = This entry contains definitions for routing with routing tables/longest prefix matching. A routing table entry is modelled as a record of a prefix match, a metric, an output port, and an optional next hop. A routing table is a list of entries, sorted by prefix length and metric. Additionally, a parser and serializer for the output of the ip-route command, a function to create a relation from output port to corresponding destination IP space, and a model of a Linux-style router are included. [KBPs] title = Knowledge-based programs author = Peter Gammie topic = Computer science/Automata and formal languages date = 2011-05-17 abstract = Knowledge-based programs (KBPs) are a formalism for directly relating agents' knowledge and behaviour. Here we present a general scheme for compiling KBPs to executable automata with a proof of correctness in Isabelle/HOL. We develop the algorithm top-down, using Isabelle's locale mechanism to structure these proofs, and show that two classic examples can be synthesised using Isabelle's code generator. extra-history = Change history: [2012-03-06]: Add some more views and revive the code generation. notify = kleing@cse.unsw.edu.au [Tarskis_Geometry] title = The independence of Tarski's Euclidean axiom author = T. J. M. Makarios topic = Mathematics/Geometry date = 2012-10-30 abstract = Tarski's axioms of plane geometry are formalized and, using the standard real Cartesian model, shown to be consistent. A substantial theory of the projective plane is developed. Building on this theory, the Klein-Beltrami model of the hyperbolic plane is defined and shown to satisfy all of Tarski's axioms except his Euclidean axiom; thus Tarski's Euclidean axiom is shown to be independent of his other axioms of plane geometry.

An earlier version of this work was the subject of the author's MSc thesis, which contains natural-language explanations of some of the more interesting proofs. notify = tjm1983@gmail.com [General-Triangle] title = The General Triangle Is Unique author = Joachim Breitner topic = Mathematics/Geometry date = 2011-04-01 abstract = Some acute-angled triangles are special, e.g. right-angled or isoscele triangles. Some are not of this kind, but, without measuring angles, look as if they were. In that sense, there is exactly one general triangle. This well-known fact is proven here formally. notify = mail@joachim-breitner.de [LightweightJava] title = Lightweight Java author = Rok Strniša , Matthew Parkinson topic = Computer science/Programming languages/Language definitions date = 2011-02-07 abstract = A fully-formalized and extensible minimal imperative fragment of Java. notify = rok@strnisa.com [Lower_Semicontinuous] title = Lower Semicontinuous Functions author = Bogdan Grechuk topic = Mathematics/Analysis date = 2011-01-08 abstract = We define the notions of lower and upper semicontinuity for functions from a metric space to the extended real line. We prove that a function is both lower and upper semicontinuous if and only if it is continuous. We also give several equivalent characterizations of lower semicontinuity. In particular, we prove that a function is lower semicontinuous if and only if its epigraph is a closed set. Also, we introduce the notion of the lower semicontinuous hull of an arbitrary function and prove its basic properties. notify = hoelzl@in.tum.de [RIPEMD-160-SPARK] title = RIPEMD-160 author = Fabian Immler topic = Computer science/Programming languages/Static analysis date = 2011-01-10 abstract = This work presents a verification of an implementation in SPARK/ADA of the cryptographic hash-function RIPEMD-160. A functional specification of RIPEMD-160 is given in Isabelle/HOL. Proofs for the verification conditions generated by the static-analysis toolset of SPARK certify the functional correctness of the implementation. extra-history = Change history: [2015-11-09]: Entry is now obsolete, moved to Isabelle distribution. notify = immler@in.tum.de [Regular-Sets] title = Regular Sets and Expressions author = Alexander Krauss , Tobias Nipkow contributors = Manuel Eberl topic = Computer science/Automata and formal languages date = 2010-05-12 abstract = This is a library of constructions on regular expressions and languages. It provides the operations of concatenation, Kleene star and derivative on languages. Regular expressions and their meaning are defined. An executable equivalence checker for regular expressions is verified; it does not need automata but works directly on regular expressions. By mapping regular expressions to binary relations, an automatic and complete proof method for (in)equalities of binary relations over union, concatenation and (reflexive) transitive closure is obtained.

Extended regular expressions with complement and intersection are also defined and an equivalence checker is provided. extra-history = Change history: [2011-08-26]: Christian Urban added a theory about derivatives and partial derivatives of regular expressions
[2012-05-10]: Tobias Nipkow added extended regular expressions
[2012-05-10]: Tobias Nipkow added equivalence checking with partial derivatives notify = nipkow@in.tum.de, krauss@in.tum.de, christian.urban@kcl.ac.uk [Regex_Equivalence] title = Unified Decision Procedures for Regular Expression Equivalence author = Tobias Nipkow , Dmitriy Traytel topic = Computer science/Automata and formal languages date = 2014-01-30 abstract = We formalize a unified framework for verified decision procedures for regular expression equivalence. Five recently published formalizations of such decision procedures (three based on derivatives, two on marked regular expressions) can be obtained as instances of the framework. We discover that the two approaches based on marked regular expressions, which were previously thought to be the same, are different, and one seems to produce uniformly smaller automata. The common framework makes it possible to compare the performance of the different decision procedures in a meaningful way. The formalization is described in a paper of the same name presented at Interactive Theorem Proving 2014. notify = nipkow@in.tum.de, traytel@in.tum.de [MSO_Regex_Equivalence] title = Decision Procedures for MSO on Words Based on Derivatives of Regular Expressions author = Dmitriy Traytel , Tobias Nipkow topic = Computer science/Automata and formal languages, Logic/General logic/Decidability of theories date = 2014-06-12 abstract = Monadic second-order logic on finite words (MSO) is a decidable yet expressive logic into which many decision problems can be encoded. Since MSO formulas correspond to regular languages, equivalence of MSO formulas can be reduced to the equivalence of some regular structures (e.g. automata). We verify an executable decision procedure for MSO formulas that is not based on automata but on regular expressions.

Decision procedures for regular expression equivalence have been formalized before, usually based on Brzozowski derivatives. Yet, for a straightforward embedding of MSO formulas into regular expressions an extension of regular expressions with a projection operation is required. We prove total correctness and completeness of an equivalence checker for regular expressions extended in that way. We also define a language-preserving translation of formulas into regular expressions with respect to two different semantics of MSO.

The formalization is described in this ICFP 2013 functional pearl. notify = traytel@in.tum.de, nipkow@in.tum.de [Formula_Derivatives] title = Derivatives of Logical Formulas author = Dmitriy Traytel topic = Computer science/Automata and formal languages, Logic/General logic/Decidability of theories date = 2015-05-28 abstract = We formalize new decision procedures for WS1S, M2L(Str), and Presburger Arithmetics. Formulas of these logics denote regular languages. Unlike traditional decision procedures, we do not translate formulas into automata (nor into regular expressions), at least not explicitly. Instead we devise notions of derivatives (inspired by Brzozowski derivatives for regular expressions) that operate on formulas directly and compute a syntactic bisimulation using these derivatives. The treatment of Boolean connectives and quantifiers is uniform for all mentioned logics and is abstracted into a locale. This locale is then instantiated by different atomic formulas and their derivatives (which may differ even for the same logic under different encodings of interpretations as formal words).

The WS1S instance is described in the draft paper A Coalgebraic Decision Procedure for WS1S by the author. notify = traytel@in.tum.de [Myhill-Nerode] title = The Myhill-Nerode Theorem Based on Regular Expressions author = Chunhan Wu <>, Xingyuan Zhang <>, Christian Urban contributors = Manuel Eberl topic = Computer science/Automata and formal languages date = 2011-08-26 abstract = There are many proofs of the Myhill-Nerode theorem using automata. In this library we give a proof entirely based on regular expressions, since regularity of languages can be conveniently defined using regular expressions (it is more painful in HOL to define regularity in terms of automata). We prove the first direction of the Myhill-Nerode theorem by solving equational systems that involve regular expressions. For the second direction we give two proofs: one using tagging-functions and another using partial derivatives. We also establish various closure properties of regular languages. Most details of the theories are described in our ITP 2011 paper. notify = christian.urban@kcl.ac.uk [Universal_Turing_Machine] title = Universal Turing Machine author = Jian Xu<>, Xingyuan Zhang<>, Christian Urban , Sebastiaan J. C. Joosten topic = Logic/Computability, Computer science/Automata and formal languages date = 2019-02-08 notify = sjcjoosten@gmail.com, christian.urban@kcl.ac.uk abstract = We formalise results from computability theory: recursive functions, undecidability of the halting problem, and the existence of a universal Turing machine. This formalisation is the AFP entry corresponding to the paper Mechanising Turing Machines and Computability Theory in Isabelle/HOL, ITP 2013. [CYK] title = A formalisation of the Cocke-Younger-Kasami algorithm author = Maksym Bortin date = 2016-04-27 topic = Computer science/Algorithms, Computer science/Automata and formal languages abstract = The theory provides a formalisation of the Cocke-Younger-Kasami algorithm (CYK for short), an approach to solving the word problem for context-free languages. CYK decides if a word is in the languages generated by a context-free grammar in Chomsky normal form. The formalized algorithm is executable. notify = maksym.bortin@nicta.com.au [Boolean_Expression_Checkers] title = Boolean Expression Checkers author = Tobias Nipkow date = 2014-06-08 topic = Computer science/Algorithms, Logic/General logic/Mechanization of proofs abstract = This entry provides executable checkers for the following properties of boolean expressions: satisfiability, tautology and equivalence. Internally, the checkers operate on binary decision trees and are reasonably efficient (for purely functional algorithms). extra-history = Change history: [2015-09-23]: Salomon Sickert added an interface that does not require the usage of the Boolean formula datatype. Furthermore the general Mapping type is used instead of an association list. notify = nipkow@in.tum.de [Presburger-Automata] title = Formalizing the Logic-Automaton Connection author = Stefan Berghofer , Markus Reiter <> date = 2009-12-03 topic = Computer science/Automata and formal languages, Logic/General logic/Decidability of theories abstract = This work presents a formalization of a library for automata on bit strings. It forms the basis of a reflection-based decision procedure for Presburger arithmetic, which is efficiently executable thanks to Isabelle's code generator. With this work, we therefore provide a mechanized proof of a well-known connection between logic and automata theory. The formalization is also described in a publication [TPHOLs 2009]. notify = berghofe@in.tum.de [Functional-Automata] title = Functional Automata author = Tobias Nipkow date = 2004-03-30 topic = Computer science/Automata and formal languages abstract = This theory defines deterministic and nondeterministic automata in a functional representation: the transition function/relation and the finality predicate are just functions. Hence the state space may be infinite. It is shown how to convert regular expressions into such automata. A scanner (generator) is implemented with the help of functional automata: the scanner chops the input up into longest recognized substrings. Finally we also show how to convert a certain subclass of functional automata (essentially the finite deterministic ones) into regular sets. notify = nipkow@in.tum.de [Statecharts] title = Formalizing Statecharts using Hierarchical Automata author = Steffen Helke , Florian Kammüller topic = Computer science/Automata and formal languages date = 2010-08-08 abstract = We formalize in Isabelle/HOL the abtract syntax and a synchronous step semantics for the specification language Statecharts. The formalization is based on Hierarchical Automata which allow a structural decomposition of Statecharts into Sequential Automata. To support the composition of Statecharts, we introduce calculating operators to construct a Hierarchical Automaton in a stepwise manner. Furthermore, we present a complete semantics of Statecharts including a theory of data spaces, which enables the modelling of racing effects. We also adapt CTL for Statecharts to build a bridge for future combinations with model checking. However the main motivation of this work is to provide a sound and complete basis for reasoning on Statecharts. As a central meta theorem we prove that the well-formedness of a Statechart is preserved by the semantics. notify = nipkow@in.tum.de [Stuttering_Equivalence] title = Stuttering Equivalence author = Stephan Merz topic = Computer science/Automata and formal languages date = 2012-05-07 abstract =

Two omega-sequences are stuttering equivalent if they differ only by finite repetitions of elements. Stuttering equivalence is a fundamental concept in the theory of concurrent and distributed systems. Notably, Lamport argues that refinement notions for such systems should be insensitive to finite stuttering. Peled and Wilke showed that all PLTL (propositional linear-time temporal logic) properties that are insensitive to stuttering equivalence can be expressed without the next-time operator. Stuttering equivalence is also important for certain verification techniques such as partial-order reduction for model checking.

We formalize stuttering equivalence in Isabelle/HOL. Our development relies on the notion of stuttering sampling functions that may skip blocks of identical sequence elements. We also encode PLTL and prove the theorem due to Peled and Wilke.

extra-history = Change history: [2013-01-31]: Added encoding of PLTL and proved Peled and Wilke's theorem. Adjusted abstract accordingly. notify = Stephan.Merz@loria.fr [Coinductive_Languages] title = A Codatatype of Formal Languages author = Dmitriy Traytel topic = Computer science/Automata and formal languages date = 2013-11-15 abstract =

We define formal languages as a codataype of infinite trees branching over the alphabet. Each node in such a tree indicates whether the path to this node constitutes a word inside or outside of the language. This codatatype is isormorphic to the set of lists representation of languages, but caters for definitions by corecursion and proofs by coinduction.

Regular operations on languages are then defined by primitive corecursion. A difficulty arises here, since the standard definitions of concatenation and iteration from the coalgebraic literature are not primitively corecursive-they require guardedness up-to union/concatenation. Without support for up-to corecursion, these operation must be defined as a composition of primitive ones (and proved being equal to the standard definitions). As an exercise in coinduction we also prove the axioms of Kleene algebra for the defined regular operations.

Furthermore, a language for context-free grammars given by productions in Greibach normal form and an initial nonterminal is constructed by primitive corecursion, yielding an executable decision procedure for the word problem without further ado.

notify = traytel@in.tum.de [Tree-Automata] title = Tree Automata author = Peter Lammich date = 2009-11-25 topic = Computer science/Automata and formal languages abstract = This work presents a machine-checked tree automata library for Standard-ML, OCaml and Haskell. The algorithms are efficient by using appropriate data structures like RB-trees. The available algorithms for non-deterministic automata include membership query, reduction, intersection, union, and emptiness check with computation of a witness for non-emptiness. The executable algorithms are derived from less-concrete, non-executable algorithms using data-refinement techniques. The concrete data structures are from the Isabelle Collections Framework. Moreover, this work contains a formalization of the class of tree-regular languages and its closure properties under set operations. notify = peter.lammich@uni-muenster.de, nipkow@in.tum.de [Depth-First-Search] title = Depth First Search author = Toshiaki Nishihara <>, Yasuhiko Minamide <> date = 2004-06-24 topic = Computer science/Algorithms/Graph abstract = Depth-first search of a graph is formalized with recdef. It is shown that it visits all of the reachable nodes from a given list of nodes. Executable ML code of depth-first search is obtained using the code generation feature of Isabelle/HOL. notify = lp15@cam.ac.uk, krauss@in.tum.de [FFT] title = Fast Fourier Transform author = Clemens Ballarin date = 2005-10-12 topic = Computer science/Algorithms/Mathematical abstract = We formalise a functional implementation of the FFT algorithm over the complex numbers, and its inverse. Both are shown equivalent to the usual definitions of these operations through Vandermonde matrices. They are also shown to be inverse to each other, more precisely, that composition of the inverse and the transformation yield the identity up to a scalar. notify = ballarin@in.tum.de [Gauss-Jordan-Elim-Fun] title = Gauss-Jordan Elimination for Matrices Represented as Functions author = Tobias Nipkow date = 2011-08-19 topic = Computer science/Algorithms/Mathematical, Mathematics/Algebra abstract = This theory provides a compact formulation of Gauss-Jordan elimination for matrices represented as functions. Its distinctive feature is succinctness. It is not meant for large computations. notify = nipkow@in.tum.de [UpDown_Scheme] title = Verification of the UpDown Scheme author = Johannes Hölzl date = 2015-01-28 topic = Computer science/Algorithms/Mathematical abstract = The UpDown scheme is a recursive scheme used to compute the stiffness matrix on a special form of sparse grids. Usually, when discretizing a Euclidean space of dimension d we need O(n^d) points, for n points along each dimension. Sparse grids are a hierarchical representation where the number of points is reduced to O(n * log(n)^d). One disadvantage of such sparse grids is that the algorithm now operate recursively in the dimensions and levels of the sparse grid.

The UpDown scheme allows us to compute the stiffness matrix on such a sparse grid. The stiffness matrix represents the influence of each representation function on the L^2 scalar product. For a detailed description see Dirk Pflüger's PhD thesis. This formalization was developed as an interdisciplinary project (IDP) at the Technische Universität München. notify = hoelzl@in.tum.de [GraphMarkingIBP] title = Verification of the Deutsch-Schorr-Waite Graph Marking Algorithm using Data Refinement author = Viorel Preoteasa , Ralph-Johan Back date = 2010-05-28 topic = Computer science/Algorithms/Graph abstract = The verification of the Deutsch-Schorr-Waite graph marking algorithm is used as a benchmark in many formalizations of pointer programs. The main purpose of this mechanization is to show how data refinement of invariant based programs can be used in verifying practical algorithms. The verification starts with an abstract algorithm working on a graph given by a relation next on nodes. Gradually the abstract program is refined into Deutsch-Schorr-Waite graph marking algorithm where only one bit per graph node of additional memory is used for marking. extra-history = Change history: [2012-01-05]: Updated for the new definition of data refinement and the new syntax for demonic and angelic update statements notify = viorel.preoteasa@aalto.fi [Efficient-Mergesort] title = Efficient Mergesort topic = Computer science/Algorithms date = 2011-11-09 author = Christian Sternagel abstract = We provide a formalization of the mergesort algorithm as used in GHC's Data.List module, proving correctness and stability. Furthermore, experimental data suggests that generated (Haskell-)code for this algorithm is much faster than for previous algorithms available in the Isabelle distribution. extra-history = Change history: [2012-10-24]: Added reference to journal article.
[2018-09-17]: Added theory Efficient_Mergesort that works exclusively with the mutual induction schemas generated by the function package.
[2018-09-19]: Added theory Mergesort_Complexity that proves an upper bound on the number of comparisons that are required by mergesort.
[2018-09-19]: Theory Efficient_Mergesort replaces theory Efficient_Sort but keeping the old name Efficient_Sort. [2020-11-20]: Additional theory Natural_Mergesort that developes an efficient mergesort algorithm without key-functions for educational purposes. notify = c.sternagel@gmail.com [SATSolverVerification] title = Formal Verification of Modern SAT Solvers author = Filip Marić date = 2008-07-23 topic = Computer science/Algorithms abstract = This document contains formal correctness proofs of modern SAT solvers. Following (Krstic et al, 2007) and (Nieuwenhuis et al., 2006), solvers are described using state-transition systems. Several different SAT solver descriptions are given and their partial correctness and termination is proved. These include:

  • a solver based on classical DPLL procedure (using only a backtrack-search with unit propagation),
  • a very general solver with backjumping and learning (similar to the description given in (Nieuwenhuis et al., 2006)), and
  • a solver with a specific conflict analysis algorithm (similar to the description given in (Krstic et al., 2007)).
Within the SAT solver correctness proofs, a large number of lemmas about propositional logic and CNF formulae are proved. This theory is self-contained and could be used for further exploring of properties of CNF based SAT algorithms. notify = [Transitive-Closure] title = Executable Transitive Closures of Finite Relations topic = Computer science/Algorithms/Graph date = 2011-03-14 author = Christian Sternagel , René Thiemann license = LGPL abstract = We provide a generic work-list algorithm to compute the transitive closure of finite relations where only successors of newly detected states are generated. This algorithm is then instantiated for lists over arbitrary carriers and red black trees (which are faster but require a linear order on the carrier), respectively. Our formalization was performed as part of the IsaFoR/CeTA project where reflexive transitive closures of large tree automata have to be computed. extra-history = Change history: [2014-09-04] added example simprocs in Finite_Transitive_Closure_Simprocs notify = c.sternagel@gmail.com, rene.thiemann@uibk.ac.at [Transitive-Closure-II] title = Executable Transitive Closures topic = Computer science/Algorithms/Graph date = 2012-02-29 author = René Thiemann license = LGPL abstract =

We provide a generic work-list algorithm to compute the (reflexive-)transitive closure of relations where only successors of newly detected states are generated. In contrast to our previous work, the relations do not have to be finite, but each element must only have finitely many (indirect) successors. Moreover, a subsumption relation can be used instead of pure equality. An executable variant of the algorithm is available where the generic operations are instantiated with list operations.

This formalization was performed as part of the IsaFoR/CeTA project, and it has been used to certify size-change termination proofs where large transitive closures have to be computed.

notify = rene.thiemann@uibk.ac.at [MuchAdoAboutTwo] title = Much Ado About Two author = Sascha Böhme date = 2007-11-06 topic = Computer science/Algorithms abstract = This article is an Isabelle formalisation of a paper with the same title. In a similar way as Knuth's 0-1-principle for sorting algorithms, that paper develops a 0-1-2-principle for parallel prefix computations. notify = boehmes@in.tum.de [DiskPaxos] title = Proving the Correctness of Disk Paxos date = 2005-06-22 author = Mauro Jaskelioff , Stephan Merz topic = Computer science/Algorithms/Distributed abstract = Disk Paxos is an algorithm for building arbitrary fault-tolerant distributed systems. The specification of Disk Paxos has been proved correct informally and tested using the TLC model checker, but up to now, it has never been fully formally verified. In this work we have formally verified its correctness using the Isabelle theorem prover and the HOL logic system, showing that Isabelle is a practical tool for verifying properties of TLA+ specifications. notify = kleing@cse.unsw.edu.au [GenClock] title = Formalization of a Generalized Protocol for Clock Synchronization author = Alwen Tiu date = 2005-06-24 topic = Computer science/Algorithms/Distributed abstract = We formalize the generalized Byzantine fault-tolerant clock synchronization protocol of Schneider. This protocol abstracts from particular algorithms or implementations for clock synchronization. This abstraction includes several assumptions on the behaviors of physical clocks and on general properties of concrete algorithms/implementations. Based on these assumptions the correctness of the protocol is proved by Schneider. His proof was later verified by Shankar using the theorem prover EHDM (precursor to PVS). Our formalization in Isabelle/HOL is based on Shankar's formalization. notify = kleing@cse.unsw.edu.au [ClockSynchInst] title = Instances of Schneider's generalized protocol of clock synchronization author = Damián Barsotti date = 2006-03-15 topic = Computer science/Algorithms/Distributed abstract = F. B. Schneider ("Understanding protocols for Byzantine clock synchronization") generalizes a number of protocols for Byzantine fault-tolerant clock synchronization and presents a uniform proof for their correctness. In Schneider's schema, each processor maintains a local clock by periodically adjusting each value to one computed by a convergence function applied to the readings of all the clocks. Then, correctness of an algorithm, i.e. that the readings of two clocks at any time are within a fixed bound of each other, is based upon some conditions on the convergence function. To prove that a particular clock synchronization algorithm is correct it suffices to show that the convergence function used by the algorithm meets Schneider's conditions. Using the theorem prover Isabelle, we formalize the proofs that the convergence functions of two algorithms, namely, the Interactive Convergence Algorithm (ICA) of Lamport and Melliar-Smith and the Fault-tolerant Midpoint algorithm of Lundelius-Lynch, meet Schneider's conditions. Furthermore, we experiment on handling some parts of the proofs with fully automatic tools like ICS and CVC-lite. These theories are part of a joint work with Alwen Tiu and Leonor P. Nieto "Verification of Clock Synchronization Algorithms: Experiments on a combination of deductive tools" in proceedings of AVOCS 2005. In this work the correctness of Schneider schema was also verified using Isabelle (entry GenClock in AFP). notify = kleing@cse.unsw.edu.au [Heard_Of] title = Verifying Fault-Tolerant Distributed Algorithms in the Heard-Of Model date = 2012-07-27 author = Henri Debrat , Stephan Merz topic = Computer science/Algorithms/Distributed abstract = Distributed computing is inherently based on replication, promising increased tolerance to failures of individual computing nodes or communication channels. Realizing this promise, however, involves quite subtle algorithmic mechanisms, and requires precise statements about the kinds and numbers of faults that an algorithm tolerates (such as process crashes, communication faults or corrupted values). The landmark theorem due to Fischer, Lynch, and Paterson shows that it is impossible to achieve Consensus among N asynchronously communicating nodes in the presence of even a single permanent failure. Existing solutions must rely on assumptions of "partial synchrony".

Indeed, there have been numerous misunderstandings on what exactly a given algorithm is supposed to realize in what kinds of environments. Moreover, the abundance of subtly different computational models complicates comparisons between different algorithms. Charron-Bost and Schiper introduced the Heard-Of model for representing algorithms and failure assumptions in a uniform framework, simplifying comparisons between algorithms.

In this contribution, we represent the Heard-Of model in Isabelle/HOL. We define two semantics of runs of algorithms with different unit of atomicity and relate these through a reduction theorem that allows us to verify algorithms in the coarse-grained semantics (where proofs are easier) and infer their correctness for the fine-grained one (which corresponds to actual executions). We instantiate the framework by verifying six Consensus algorithms that differ in the underlying algorithmic mechanisms and the kinds of faults they tolerate. notify = Stephan.Merz@loria.fr [Consensus_Refined] title = Consensus Refined date = 2015-03-18 author = Ognjen Maric <>, Christoph Sprenger topic = Computer science/Algorithms/Distributed abstract = Algorithms for solving the consensus problem are fundamental to distributed computing. Despite their brevity, their ability to operate in concurrent, asynchronous and failure-prone environments comes at the cost of complex and subtle behaviors. Accordingly, understanding how they work and proving their correctness is a non-trivial endeavor where abstraction is immensely helpful. Moreover, research on consensus has yielded a large number of algorithms, many of which appear to share common algorithmic ideas. A natural question is whether and how these similarities can be distilled and described in a precise, unified way. In this work, we combine stepwise refinement and lockstep models to provide an abstract and unified view of a sizeable family of consensus algorithms. Our models provide insights into the design choices underlying the different algorithms, and classify them based on those choices. notify = sprenger@inf.ethz.ch [Key_Agreement_Strong_Adversaries] title = Refining Authenticated Key Agreement with Strong Adversaries author = Joseph Lallemand , Christoph Sprenger topic = Computer science/Security license = LGPL date = 2017-01-31 notify = joseph.lallemand@loria.fr, sprenger@inf.ethz.ch abstract = We develop a family of key agreement protocols that are correct by construction. Our work substantially extends prior work on developing security protocols by refinement. First, we strengthen the adversary by allowing him to compromise different resources of protocol participants, such as their long-term keys or their session keys. This enables the systematic development of protocols that ensure strong properties such as perfect forward secrecy. Second, we broaden the class of protocols supported to include those with non-atomic keys and equationally defined cryptographic operators. We use these extensions to develop key agreement protocols including signed Diffie-Hellman and the core of IKEv1 and SKEME. [Security_Protocol_Refinement] title = Developing Security Protocols by Refinement author = Christoph Sprenger , Ivano Somaini<> topic = Computer science/Security license = LGPL date = 2017-05-24 notify = sprenger@inf.ethz.ch abstract = We propose a development method for security protocols based on stepwise refinement. Our refinement strategy transforms abstract security goals into protocols that are secure when operating over an insecure channel controlled by a Dolev-Yao-style intruder. As intermediate levels of abstraction, we employ messageless guard protocols and channel protocols communicating over channels with security properties. These abstractions provide insights on why protocols are secure and foster the development of families of protocols sharing common structure and properties. We have implemented our method in Isabelle/HOL and used it to develop different entity authentication and key establishment protocols, including realistic features such as key confirmation, replay caches, and encrypted tickets. Our development highlights that guard protocols and channel protocols provide fundamental abstractions for bridging the gap between security properties and standard protocol descriptions based on cryptographic messages. It also shows that our refinement approach scales to protocols of nontrivial size and complexity. [Abortable_Linearizable_Modules] title = Abortable Linearizable Modules author = Rachid Guerraoui , Viktor Kuncak , Giuliano Losa date = 2012-03-01 topic = Computer science/Algorithms/Distributed abstract = We define the Abortable Linearizable Module automaton (ALM for short) and prove its key composition property using the IOA theory of HOLCF. The ALM is at the heart of the Speculative Linearizability framework. This framework simplifies devising correct speculative algorithms by enabling their decomposition into independent modules that can be analyzed and proved correct in isolation. It is particularly useful when working in a distributed environment, where the need to tolerate faults and asynchrony has made current monolithic protocols so intricate that it is no longer tractable to check their correctness. Our theory contains a typical example of a refinement proof in the I/O-automata framework of Lynch and Tuttle. notify = giuliano@losa.fr, nipkow@in.tum.de [Amortized_Complexity] title = Amortized Complexity Verified author = Tobias Nipkow date = 2014-07-07 topic = Computer science/Data structures abstract = A framework for the analysis of the amortized complexity of functional data structures is formalized in Isabelle/HOL and applied to a number of standard examples and to the folowing non-trivial ones: skew heaps, splay trees, splay heaps and pairing heaps.

A preliminary version of this work (without pairing heaps) is described in a paper published in the proceedings of the conference on Interactive Theorem Proving ITP 2015. An extended version of this publication is available here. extra-history = Change history: [2015-03-17]: Added pairing heaps by Hauke Brinkop.
[2016-07-12]: Moved splay heaps from here to Splay_Tree
[2016-07-14]: Moved pairing heaps from here to the new Pairing_Heap notify = nipkow@in.tum.de [Dynamic_Tables] title = Parameterized Dynamic Tables author = Tobias Nipkow date = 2015-06-07 topic = Computer science/Data structures abstract = This article formalizes the amortized analysis of dynamic tables parameterized with their minimal and maximal load factors and the expansion and contraction factors.

A full description is found in a companion paper. notify = nipkow@in.tum.de [AVL-Trees] title = AVL Trees author = Tobias Nipkow , Cornelia Pusch <> date = 2004-03-19 topic = Computer science/Data structures abstract = Two formalizations of AVL trees with room for extensions. The first formalization is monolithic and shorter, the second one in two stages, longer and a bit simpler. The final implementation is the same. If you are interested in developing this further, please contact gerwin.klein@nicta.com.au. extra-history = Change history: [2011-04-11]: Ondrej Kuncar added delete function notify = kleing@cse.unsw.edu.au [BDD] title = BDD Normalisation author = Veronika Ortner <>, Norbert Schirmer <> date = 2008-02-29 topic = Computer science/Data structures abstract = We present the verification of the normalisation of a binary decision diagram (BDD). The normalisation follows the original algorithm presented by Bryant in 1986 and transforms an ordered BDD in a reduced, ordered and shared BDD. The verification is based on Hoare logics. notify = kleing@cse.unsw.edu.au, norbert.schirmer@web.de [BinarySearchTree] title = Binary Search Trees author = Viktor Kuncak date = 2004-04-05 topic = Computer science/Data structures abstract = The correctness is shown of binary search tree operations (lookup, insert and remove) implementing a set. Two versions are given, for both structured and linear (tactic-style) proofs. An implementation of integer-indexed maps is also verified. notify = lp15@cam.ac.uk [Splay_Tree] title = Splay Tree author = Tobias Nipkow notify = nipkow@in.tum.de date = 2014-08-12 topic = Computer science/Data structures abstract = Splay trees are self-adjusting binary search trees which were invented by Sleator and Tarjan [JACM 1985]. This entry provides executable and verified functional splay trees as well as the related splay heaps (due to Okasaki).

The amortized complexity of splay trees and heaps is analyzed in the AFP entry Amortized Complexity. extra-history = Change history: [2016-07-12]: Moved splay heaps here from Amortized_Complexity [Root_Balanced_Tree] title = Root-Balanced Tree author = Tobias Nipkow notify = nipkow@in.tum.de date = 2017-08-20 topic = Computer science/Data structures abstract =

Andersson introduced general balanced trees, search trees based on the design principle of partial rebuilding: perform update operations naively until the tree becomes too unbalanced, at which point a whole subtree is rebalanced. This article defines and analyzes a functional version of general balanced trees, which we call root-balanced trees. Using a lightweight model of execution time, amortized logarithmic complexity is verified in the theorem prover Isabelle.

This is the Isabelle formalization of the material decribed in the APLAS 2017 article Verified Root-Balanced Trees by the same author, which also presents experimental results that show competitiveness of root-balanced with AVL and red-black trees.

[Skew_Heap] title = Skew Heap author = Tobias Nipkow date = 2014-08-13 topic = Computer science/Data structures abstract = Skew heaps are an amazingly simple and lightweight implementation of priority queues. They were invented by Sleator and Tarjan [SIAM 1986] and have logarithmic amortized complexity. This entry provides executable and verified functional skew heaps.

The amortized complexity of skew heaps is analyzed in the AFP entry Amortized Complexity. notify = nipkow@in.tum.de [Pairing_Heap] title = Pairing Heap author = Hauke Brinkop , Tobias Nipkow date = 2016-07-14 topic = Computer science/Data structures abstract = This library defines three different versions of pairing heaps: a functional version of the original design based on binary trees [Fredman et al. 1986], the version by Okasaki [1998] and a modified version of the latter that is free of structural invariants.

The amortized complexity of pairing heaps is analyzed in the AFP article Amortized Complexity. extra-0 = Origin: This library was extracted from Amortized Complexity and extended. notify = nipkow@in.tum.de [Priority_Queue_Braun] title = Priority Queues Based on Braun Trees author = Tobias Nipkow date = 2014-09-04 topic = Computer science/Data structures abstract = This entry verifies priority queues based on Braun trees. Insertion and deletion take logarithmic time and preserve the balanced nature of Braun trees. Two implementations of deletion are provided. notify = nipkow@in.tum.de extra-history = Change history: [2019-12-16]: Added theory Priority_Queue_Braun2 with second version of del_min [Binomial-Queues] title = Functional Binomial Queues author = René Neumann date = 2010-10-28 topic = Computer science/Data structures abstract = Priority queues are an important data structure and efficient implementations of them are crucial. We implement a functional variant of binomial queues in Isabelle/HOL and show its functional correctness. A verification against an abstract reference specification of priority queues has also been attempted, but could not be achieved to the full extent. notify = florian.haftmann@informatik.tu-muenchen.de [Binomial-Heaps] title = Binomial Heaps and Skew Binomial Heaps author = Rene Meis , Finn Nielsen , Peter Lammich date = 2010-10-28 topic = Computer science/Data structures abstract = We implement and prove correct binomial heaps and skew binomial heaps. Both are data-structures for priority queues. While binomial heaps have logarithmic findMin, deleteMin, insert, and meld operations, skew binomial heaps have constant time findMin, insert, and meld operations, and only the deleteMin-operation is logarithmic. This is achieved by using skew links to avoid cascading linking on insert-operations, and data-structural bootstrapping to get constant-time findMin and meld operations. Our implementation follows the paper by Brodal and Okasaki. notify = peter.lammich@uni-muenster.de [Finger-Trees] title = Finger Trees author = Benedikt Nordhoff , Stefan Körner , Peter Lammich date = 2010-10-28 topic = Computer science/Data structures abstract = We implement and prove correct 2-3 finger trees. Finger trees are a general purpose data structure, that can be used to efficiently implement other data structures, such as priority queues. Intuitively, a finger tree is an annotated sequence, where the annotations are elements of a monoid. Apart from operations to access the ends of the sequence, the main operation is to split the sequence at the point where a monotone predicate over the sum of the left part of the sequence becomes true for the first time. The implementation follows the paper of Hinze and Paterson. The code generator can be used to get efficient, verified code. notify = peter.lammich@uni-muenster.de [Trie] title = Trie author = Andreas Lochbihler , Tobias Nipkow date = 2015-03-30 topic = Computer science/Data structures abstract = This article formalizes the ``trie'' data structure invented by Fredkin [CACM 1960]. It also provides a specialization where the entries in the trie are lists. extra-0 = Origin: This article was extracted from existing articles by the authors. notify = nipkow@in.tum.de [FinFun] title = Code Generation for Functions as Data author = Andreas Lochbihler date = 2009-05-06 topic = Computer science/Data structures abstract = FinFuns are total functions that are constant except for a finite set of points, i.e. a generalisation of finite maps. They are formalised as a new type in Isabelle/HOL such that the code generator can handle equality tests and quantification on FinFuns. On the code output level, FinFuns are explicitly represented by constant functions and pointwise updates, similarly to associative lists. Inside the logic, they behave like ordinary functions with extensionality. Via the update/constant pattern, a recursion combinator and an induction rule for FinFuns allow for defining and reasoning about operators on FinFun that are also executable. extra-history = Change history: [2010-08-13]: new concept domain of a FinFun as a FinFun (revision 34b3517cbc09)
[2010-11-04]: new conversion function from FinFun to list of elements in the domain (revision 0c167102e6ed)
[2012-03-07]: replace sets as FinFuns by predicates as FinFuns because the set type constructor has been reintroduced (revision b7aa87989f3a) notify = nipkow@in.tum.de [Collections] title = Collections Framework author = Peter Lammich contributors = Andreas Lochbihler , Thomas Tuerk <> date = 2009-11-25 topic = Computer science/Data structures abstract = This development provides an efficient, extensible, machine checked collections framework. The library adopts the concepts of interface, implementation and generic algorithm from object-oriented programming and implements them in Isabelle/HOL. The framework features the use of data refinement techniques to refine an abstract specification (using high-level concepts like sets) to a more concrete implementation (using collection datastructures, like red-black-trees). The code-generator of Isabelle/HOL can be used to generate efficient code. extra-history = Change history: [2010-10-08]: New Interfaces: OrderedSet, OrderedMap, List. Fifo now implements list-interface: Function names changed: put/get --> enqueue/dequeue. New Implementations: ArrayList, ArrayHashMap, ArrayHashSet, TrieMap, TrieSet. Invariant-free datastructures: Invariant implicitely hidden in typedef. Record-interfaces: All operations of an interface encapsulated as record. Examples moved to examples subdirectory.
[2010-12-01]: New Interfaces: Priority Queues, Annotated Lists. Implemented by finger trees, (skew) binomial queues.
[2011-10-10]: SetSpec: Added operations: sng, isSng, bexists, size_abort, diff, filter, iterate_rule_insertP MapSpec: Added operations: sng, isSng, iterate_rule_insertP, bexists, size, size_abort, restrict, map_image_filter, map_value_image_filter Some maintenance changes
[2012-04-25]: New iterator foundation by Tuerk. Various maintenance changes.
[2012-08]: Collections V2. New features: Polymorphic iterators. Generic algorithm instantiation where required. Naming scheme changed from xx_opname to xx.opname. A compatibility file CollectionsV1 tries to simplify porting of existing theories, by providing old naming scheme and the old monomorphic iterator locales.
[2013-09]: Added Generic Collection Framework based on Autoref. The GenCF provides: Arbitrary nesting, full integration with Autoref.
[2014-06]: Maintenace changes to GenCF: Optimized inj_image on list_set. op_set_cart (Cartesian product). big-Union operation. atLeastLessThan - operation ({a..<b})
notify = lammich@in.tum.de [Containers] title = Light-weight Containers author = Andreas Lochbihler contributors = René Thiemann date = 2013-04-15 topic = Computer science/Data structures abstract = This development provides a framework for container types like sets and maps such that generated code implements these containers with different (efficient) data structures. Thanks to type classes and refinement during code generation, this light-weight approach can seamlessly replace Isabelle's default setup for code generation. Heuristics automatically pick one of the available data structures depending on the type of elements to be stored, but users can also choose on their own. The extensible design permits to add more implementations at any time.

To support arbitrary nesting of sets, we define a linear order on sets based on a linear order of the elements and provide efficient implementations. It even allows to compare complements with non-complements. extra-history = Change history: [2013-07-11]: add pretty printing for sets (revision 7f3f52c5f5fa)
[2013-09-20]: provide generators for canonical type class instantiations (revision 159f4401f4a8 by René Thiemann)
[2014-07-08]: add support for going from partial functions to mappings (revision 7a6fc957e8ed)
[2018-03-05]: add two application examples: depth-first search and 2SAT (revision e5e1a1da2411) notify = mail@andreas-lochbihler.de [FileRefinement] title = File Refinement author = Karen Zee , Viktor Kuncak date = 2004-12-09 topic = Computer science/Data structures abstract = These theories illustrates the verification of basic file operations (file creation, file read and file write) in the Isabelle theorem prover. We describe a file at two levels of abstraction: an abstract file represented as a resizable array, and a concrete file represented using data blocks. notify = kkz@mit.edu [Datatype_Order_Generator] title = Generating linear orders for datatypes author = René Thiemann date = 2012-08-07 topic = Computer science/Data structures abstract = We provide a framework for registering automatic methods to derive class instances of datatypes, as it is possible using Haskell's ``deriving Ord, Show, ...'' feature.

We further implemented such automatic methods to derive (linear) orders or hash-functions which are required in the Isabelle Collection Framework. Moreover, for the tactic of Huffman and Krauss to show that a datatype is countable, we implemented a wrapper so that this tactic becomes accessible in our framework.

Our formalization was performed as part of the IsaFoR/CeTA project. With our new tactic we could completely remove tedious proofs for linear orders of two datatypes.

This development is aimed at datatypes generated by the "old_datatype" command. notify = rene.thiemann@uibk.ac.at [Deriving] title = Deriving class instances for datatypes author = Christian Sternagel , René Thiemann date = 2015-03-11 topic = Computer science/Data structures abstract =

We provide a framework for registering automatic methods to derive class instances of datatypes, as it is possible using Haskell's ``deriving Ord, Show, ...'' feature.

We further implemented such automatic methods to derive comparators, linear orders, parametrizable equality functions, and hash-functions which are required in the Isabelle Collection Framework and the Container Framework. Moreover, for the tactic of Blanchette to show that a datatype is countable, we implemented a wrapper so that this tactic becomes accessible in our framework. All of the generators are based on the infrastructure that is provided by the BNF-based datatype package.

Our formalization was performed as part of the IsaFoR/CeTA project. With our new tactics we could remove several tedious proofs for (conditional) linear orders, and conditional equality operators within IsaFoR and the Container Framework.

notify = rene.thiemann@uibk.ac.at [List-Index] title = List Index date = 2010-02-20 author = Tobias Nipkow topic = Computer science/Data structures abstract = This theory provides functions for finding the index of an element in a list, by predicate and by value. notify = nipkow@in.tum.de [List-Infinite] title = Infinite Lists date = 2011-02-23 author = David Trachtenherz <> topic = Computer science/Data structures abstract = We introduce a theory of infinite lists in HOL formalized as functions over naturals (folder ListInf, theories ListInf and ListInf_Prefix). It also provides additional results for finite lists (theory ListInf/List2), natural numbers (folder CommonArith, esp. division/modulo, naturals with infinity), sets (folder CommonSet, esp. cutting/truncating sets, traversing sets of naturals). notify = nipkow@in.tum.de [Matrix] title = Executable Matrix Operations on Matrices of Arbitrary Dimensions topic = Computer science/Data structures date = 2010-06-17 author = Christian Sternagel , René Thiemann license = LGPL abstract = We provide the operations of matrix addition, multiplication, transposition, and matrix comparisons as executable functions over ordered semirings. Moreover, it is proven that strongly normalizing (monotone) orders can be lifted to strongly normalizing (monotone) orders over matrices. We further show that the standard semirings over the naturals, integers, and rationals, as well as the arctic semirings satisfy the axioms that are required by our matrix theory. Our formalization is part of the CeTA system which contains several termination techniques. The provided theories have been essential to formalize matrix-interpretations and arctic interpretations. extra-history = Change history: [2010-09-17]: Moved theory on arbitrary (ordered) semirings to Abstract Rewriting. notify = rene.thiemann@uibk.ac.at, christian.sternagel@uibk.ac.at [Matrix_Tensor] title = Tensor Product of Matrices topic = Computer science/Data structures, Mathematics/Algebra date = 2016-01-18 author = T.V.H. Prathamesh abstract = In this work, the Kronecker tensor product of matrices and the proofs of some of its properties are formalized. Properties which have been formalized include associativity of the tensor product and the mixed-product property. notify = prathamesh@imsc.res.in [Huffman] title = The Textbook Proof of Huffman's Algorithm author = Jasmin Christian Blanchette date = 2008-10-15 topic = Computer science/Data structures abstract = Huffman's algorithm is a procedure for constructing a binary tree with minimum weighted path length. This report presents a formal proof of the correctness of Huffman's algorithm written using Isabelle/HOL. Our proof closely follows the sketches found in standard algorithms textbooks, uncovering a few snags in the process. Another distinguishing feature of our formalization is the use of custom induction rules to help Isabelle's automatic tactics, leading to very short proofs for most of the lemmas. notify = jasmin.blanchette@gmail.com [Partial_Function_MR] title = Mutually Recursive Partial Functions author = René Thiemann topic = Computer science/Functional programming date = 2014-02-18 license = LGPL abstract = We provide a wrapper around the partial-function command that supports mutual recursion. notify = rene.thiemann@uibk.ac.at [Lifting_Definition_Option] title = Lifting Definition Option author = René Thiemann topic = Computer science/Functional programming date = 2014-10-13 license = LGPL abstract = We implemented a command that can be used to easily generate elements of a restricted type {x :: 'a. P x}, provided the definition is of the form f ys = (if check ys then Some(generate ys :: 'a) else None) where ys is a list of variables y1 ... yn and check ys ==> P(generate ys) can be proved.

In principle, such a definition is also directly possible using the lift_definition command. However, then this definition will not be suitable for code-generation. To this end, we automated a more complex construction of Joachim Breitner which is amenable for code-generation, and where the test check ys will only be performed once. In the automation, one auxiliary type is created, and Isabelle's lifting- and transfer-package is invoked several times. notify = rene.thiemann@uibk.ac.at [Coinductive] title = Coinductive topic = Computer science/Functional programming author = Andreas Lochbihler contributors = Johannes Hölzl date = 2010-02-12 abstract = This article collects formalisations of general-purpose coinductive data types and sets. Currently, it contains coinductive natural numbers, coinductive lists, i.e. lazy lists or streams, infinite streams, coinductive terminated lists, coinductive resumptions, a library of operations on coinductive lists, and a version of König's lemma as an application for coinductive lists.
The initial theory was contributed by Paulson and Wenzel. Extensions and other coinductive formalisations of general interest are welcome. extra-history = Change history: [2010-06-10]: coinductive lists: setup for quotient package (revision 015574f3bf3c)
[2010-06-28]: new codatatype terminated lazy lists (revision e12de475c558)
[2010-08-04]: terminated lazy lists: setup for quotient package; more lemmas (revision 6ead626f1d01)
[2010-08-17]: Koenig's lemma as an example application for coinductive lists (revision f81ce373fa96)
[2011-02-01]: lazy implementation of coinductive (terminated) lists for the code generator (revision 6034973dce83)
[2011-07-20]: new codatatype resumption (revision 811364c776c7)
[2012-06-27]: new codatatype stream with operations (with contributions by Peter Gammie) (revision dd789a56473c)
[2013-03-13]: construct codatatypes with the BNF package and adjust the definitions and proofs, setup for lifting and transfer packages (revision f593eda5b2c0)
[2013-09-20]: stream theory uses type and operations from HOL/BNF/Examples/Stream (revision 692809b2b262)
[2014-04-03]: ccpo structure on codatatypes used to define ldrop, ldropWhile, lfilter, lconcat as least fixpoint; ccpo topology on coinductive lists contributed by Johannes Hölzl; added examples (revision 23cd8156bd42)
notify = mail@andreas-lochbihler.de [Stream-Fusion] title = Stream Fusion author = Brian Huffman topic = Computer science/Functional programming date = 2009-04-29 abstract = Stream Fusion is a system for removing intermediate list structures from Haskell programs; it consists of a Haskell library along with several compiler rewrite rules. (The library is available online.)

These theories contain a formalization of much of the Stream Fusion library in HOLCF. Lazy list and stream types are defined, along with coercions between the two types, as well as an equivalence relation for streams that generate the same list. List and stream versions of map, filter, foldr, enumFromTo, append, zipWith, and concatMap are defined, and the stream versions are shown to respect stream equivalence. notify = brianh@cs.pdx.edu [Tycon] title = Type Constructor Classes and Monad Transformers author = Brian Huffman date = 2012-06-26 topic = Computer science/Functional programming abstract = These theories contain a formalization of first class type constructors and axiomatic constructor classes for HOLCF. This work is described in detail in the ICFP 2012 paper Formal Verification of Monad Transformers by the author. The formalization is a revised and updated version of earlier joint work with Matthews and White.

Based on the hierarchy of type classes in Haskell, we define classes for functors, monads, monad-plus, etc. Each one includes all the standard laws as axioms. We also provide a new user command, tycondef, for defining new type constructors in HOLCF. Using tycondef, we instantiate the type class hierarchy with various monads and monad transformers. notify = huffman@in.tum.de [CoreC++] title = CoreC++ author = Daniel Wasserrab date = 2006-05-15 topic = Computer science/Programming languages/Language definitions abstract = We present an operational semantics and type safety proof for multiple inheritance in C++. The semantics models the behavior of method calls, field accesses, and two forms of casts in C++ class hierarchies. For explanations see the OOPSLA 2006 paper by Wasserrab, Nipkow, Snelting and Tip. notify = nipkow@in.tum.de [FeatherweightJava] title = A Theory of Featherweight Java in Isabelle/HOL author = J. Nathan Foster , Dimitrios Vytiniotis date = 2006-03-31 topic = Computer science/Programming languages/Language definitions abstract = We formalize the type system, small-step operational semantics, and type soundness proof for Featherweight Java, a simple object calculus, in Isabelle/HOL. notify = kleing@cse.unsw.edu.au [Jinja] title = Jinja is not Java author = Gerwin Klein , Tobias Nipkow date = 2005-06-01 topic = Computer science/Programming languages/Language definitions abstract = We introduce Jinja, a Java-like programming language with a formal semantics designed to exhibit core features of the Java language architecture. Jinja is a compromise between realism of the language and tractability and clarity of the formal semantics. The following aspects are formalised: a big and a small step operational semantics for Jinja and a proof of their equivalence; a type system and a definite initialisation analysis; a type safety proof of the small step semantics; a virtual machine (JVM), its operational semantics and its type system; a type safety proof for the JVM; a bytecode verifier, i.e. data flow analyser for the JVM; a correctness proof of the bytecode verifier w.r.t. the type system; a compiler and a proof that it preserves semantics and well-typedness. The emphasis of this work is not on particular language features but on providing a unified model of the source language, the virtual machine and the compiler. The whole development has been carried out in the theorem prover Isabelle/HOL. notify = kleing@cse.unsw.edu.au, nipkow@in.tum.de [JinjaThreads] title = Jinja with Threads author = Andreas Lochbihler date = 2007-12-03 topic = Computer science/Programming languages/Language definitions abstract = We extend the Jinja source code semantics by Klein and Nipkow with Java-style arrays and threads. Concurrency is captured in a generic framework semantics for adding concurrency through interleaving to a sequential semantics, which features dynamic thread creation, inter-thread communication via shared memory, lock synchronisation and joins. Also, threads can suspend themselves and be notified by others. We instantiate the framework with the adapted versions of both Jinja source and byte code and show type safety for the multithreaded case. Equally, the compiler from source to byte code is extended, for which we prove weak bisimilarity between the source code small step semantics and the defensive Jinja virtual machine. On top of this, we formalise the JMM and show the DRF guarantee and consistency. For description of the different parts, see Lochbihler's papers at FOOL 2008, ESOP 2010, ITP 2011, and ESOP 2012. extra-history = Change history: [2008-04-23]: added bytecode formalisation with arrays and threads, added thread joins (revision f74a8be156a7)
[2009-04-27]: added verified compiler from source code to bytecode; encapsulate native methods in separate semantics (revision e4f26541e58a)
[2009-11-30]: extended compiler correctness proof to infinite and deadlocking computations (revision e50282397435)
[2010-06-08]: added thread interruption; new abstract memory model with sequential consistency as implementation (revision 0cb9e8dbd78d)
[2010-06-28]: new thread interruption model (revision c0440d0a1177)
[2010-10-15]: preliminary version of the Java memory model for source code (revision 02fee0ef3ca2)
[2010-12-16]: improved version of the Java memory model, also for bytecode executable scheduler for source code semantics (revision 1f41c1842f5a)
[2011-02-02]: simplified code generator setup new random scheduler (revision 3059dafd013f)
[2011-07-21]: new interruption model, generalized JMM proof of DRF guarantee, allow class Object to declare methods and fields, simplified subtyping relation, corrected division and modulo implementation (revision 46e4181ed142)
[2012-02-16]: added example programs (revision bf0b06c8913d)
[2012-11-21]: type safety proof for the Java memory model, allow spurious wake-ups (revision 76063d860ae0)
[2013-05-16]: support for non-deterministic memory allocators (revision cc3344a49ced)
[2017-10-20]: add an atomic compare-and-swap operation for volatile fields (revision a6189b1d6b30)
notify = mail@andreas-lochbihler.de [Locally-Nameless-Sigma] title = Locally Nameless Sigma Calculus author = Ludovic Henrio , Florian Kammüller , Bianca Lutz , Henry Sudhof date = 2010-04-30 topic = Computer science/Programming languages/Language definitions abstract = We present a Theory of Objects based on the original functional sigma-calculus by Abadi and Cardelli but with an additional parameter to methods. We prove confluence of the operational semantics following the outline of Nipkow's proof of confluence for the lambda-calculus reusing his theory Commutation, a generic diamond lemma reduction. We furthermore formalize a simple type system for our sigma-calculus including a proof of type safety. The entire development uses the concept of Locally Nameless representation for binders. We reuse an earlier proof of confluence for a simpler sigma-calculus based on de Bruijn indices and lists to represent objects. notify = nipkow@in.tum.de [Attack_Trees] title = Attack Trees in Isabelle for GDPR compliance of IoT healthcare systems author = Florian Kammueller topic = Computer science/Security date = 2020-04-27 notify = florian.kammuller@gmail.com abstract = In this article, we present a proof theory for Attack Trees. Attack Trees are a well established and useful model for the construction of attacks on systems since they allow a stepwise exploration of high level attacks in application scenarios. Using the expressiveness of Higher Order Logic in Isabelle, we develop a generic theory of Attack Trees with a state-based semantics based on Kripke structures and CTL. The resulting framework allows mechanically supported logic analysis of the meta-theory of the proof calculus of Attack Trees and at the same time the developed proof theory enables application to case studies. A central correctness and completeness result proved in Isabelle establishes a connection between the notion of Attack Tree validity and CTL. The application is illustrated on the example of a healthcare IoT system and GDPR compliance verification. [AutoFocus-Stream] title = AutoFocus Stream Processing for Single-Clocking and Multi-Clocking Semantics author = David Trachtenherz <> date = 2011-02-23 topic = Computer science/Programming languages/Language definitions abstract = We formalize the AutoFocus Semantics (a time-synchronous subset of the Focus formalism) as stream processing functions on finite and infinite message streams represented as finite/infinite lists. The formalization comprises both the conventional single-clocking semantics (uniform global clock for all components and communications channels) and its extension to multi-clocking semantics (internal execution clocking of a component may be a multiple of the external communication clocking). The semantics is defined by generic stream processing functions making it suitable for simulation/code generation in Isabelle/HOL. Furthermore, a number of AutoFocus semantics properties are formalized using definitions from the IntervalLogic theories. notify = nipkow@in.tum.de [FocusStreamsCaseStudies] title = Stream Processing Components: Isabelle/HOL Formalisation and Case Studies author = Maria Spichkova date = 2013-11-14 topic = Computer science/Programming languages/Language definitions abstract = This set of theories presents an Isabelle/HOL formalisation of stream processing components introduced in Focus, a framework for formal specification and development of interactive systems. This is an extended and updated version of the formalisation, which was elaborated within the methodology "Focus on Isabelle". In addition, we also applied the formalisation on three case studies that cover different application areas: process control (Steam Boiler System), data transmission (FlexRay communication protocol), memory and processing components (Automotive-Gateway System). notify = lp15@cam.ac.uk, maria.spichkova@rmit.edu.au [Isabelle_Meta_Model] title = A Meta-Model for the Isabelle API author = Frédéric Tuong , Burkhart Wolff date = 2015-09-16 topic = Computer science/Programming languages/Language definitions abstract = We represent a theory of (a fragment of) Isabelle/HOL in Isabelle/HOL. The purpose of this exercise is to write packages for domain-specific specifications such as class models, B-machines, ..., and generally speaking, any domain-specific languages whose abstract syntax can be defined by a HOL "datatype". On this basis, the Isabelle code-generator can then be used to generate code for global context transformations as well as tactic code.

Consequently the package is geared towards parsing, printing and code-generation to the Isabelle API. It is at the moment not sufficiently rich for doing meta theory on Isabelle itself. Extensions in this direction are possible though.

Moreover, the chosen fragment is fairly rudimentary. However it should be easily adapted to one's needs if a package is written on top of it. The supported API contains types, terms, transformation of global context like definitions and data-type declarations as well as infrastructure for Isar-setups.

This theory is drawn from the Featherweight OCL project where it is used to construct a package for object-oriented data-type theories generated from UML class diagrams. The Featherweight OCL, for example, allows for both the direct execution of compiled tactic code by the Isabelle API as well as the generation of ".thy"-files for debugging purposes.

Gained experience from this project shows that the compiled code is sufficiently efficient for practical purposes while being based on a formal model on which properties of the package can be proven such as termination of certain transformations, correctness, etc. notify = tuong@users.gforge.inria.fr, wolff@lri.fr [Clean] title = Clean - An Abstract Imperative Programming Language and its Theory author = Frédéric Tuong , Burkhart Wolff topic = Computer science/Programming languages, Computer science/Semantics date = 2019-10-04 notify = wolff@lri.fr, ftuong@lri.fr abstract = Clean is based on a simple, abstract execution model for an imperative target language. “Abstract” is understood in contrast to “Concrete Semantics”; alternatively, the term “shallow-style embedding” could be used. It strives for a type-safe notion of program-variables, an incremental construction of the typed state-space, support of incremental verification, and open-world extensibility of new type definitions being intertwined with the program definitions. Clean is based on a “no-frills” state-exception monad with the usual definitions of bind and unit for the compositional glue of state-based computations. Clean offers conditionals and loops supporting C-like control-flow operators such as break and return. The state-space construction is based on the extensible record package. Direct recursion of procedures is supported. Clean’s design strives for extreme simplicity. It is geared towards symbolic execution and proven correct verification tools. The underlying libraries of this package, however, deliberately restrict themselves to the most elementary infrastructure for these tasks. The package is intended to serve as demonstrator semantic backend for Isabelle/C, or for the test-generation techniques. [PCF] title = Logical Relations for PCF author = Peter Gammie date = 2012-07-01 topic = Computer science/Programming languages/Lambda calculi abstract = We apply Andy Pitts's methods of defining relations over domains to several classical results in the literature. We show that the Y combinator coincides with the domain-theoretic fixpoint operator, that parallel-or and the Plotkin existential are not definable in PCF, that the continuation semantics for PCF coincides with the direct semantics, and that our domain-theoretic semantics for PCF is adequate for reasoning about contextual equivalence in an operational semantics. Our version of PCF is untyped and has both strict and non-strict function abstractions. The development is carried out in HOLCF. notify = peteg42@gmail.com [POPLmark-deBruijn] title = POPLmark Challenge Via de Bruijn Indices author = Stefan Berghofer date = 2007-08-02 topic = Computer science/Programming languages/Lambda calculi abstract = We present a solution to the POPLmark challenge designed by Aydemir et al., which has as a goal the formalization of the meta-theory of System F<:. The formalization is carried out in the theorem prover Isabelle/HOL using an encoding based on de Bruijn indices. We start with a relatively simple formalization covering only the basic features of System F<:, and explain how it can be extended to also cover records and more advanced binding constructs. notify = berghofe@in.tum.de [Lam-ml-Normalization] title = Strong Normalization of Moggis's Computational Metalanguage author = Christian Doczkal date = 2010-08-29 topic = Computer science/Programming languages/Lambda calculi abstract = Handling variable binding is one of the main difficulties in formal proofs. In this context, Moggi's computational metalanguage serves as an interesting case study. It features monadic types and a commuting conversion rule that rearranges the binding structure. Lindley and Stark have given an elegant proof of strong normalization for this calculus. The key construction in their proof is a notion of relational TT-lifting, using stacks of elimination contexts to obtain a Girard-Tait style logical relation. I give a formalization of their proof in Isabelle/HOL-Nominal with a particular emphasis on the treatment of bound variables. notify = doczkal@ps.uni-saarland.de, nipkow@in.tum.de [MiniML] title = Mini ML author = Wolfgang Naraschewski <>, Tobias Nipkow date = 2004-03-19 topic = Computer science/Programming languages/Type systems abstract = This theory defines the type inference rules and the type inference algorithm W for MiniML (simply-typed lambda terms with let) due to Milner. It proves the soundness and completeness of W w.r.t. the rules. notify = kleing@cse.unsw.edu.au [Simpl] title = A Sequential Imperative Programming Language Syntax, Semantics, Hoare Logics and Verification Environment author = Norbert Schirmer <> date = 2008-02-29 topic = Computer science/Programming languages/Language definitions, Computer science/Programming languages/Logics license = LGPL abstract = We present the theory of Simpl, a sequential imperative programming language. We introduce its syntax, its semantics (big and small-step operational semantics) and Hoare logics for both partial as well as total correctness. We prove soundness and completeness of the Hoare logic. We integrate and automate the Hoare logic in Isabelle/HOL to obtain a practically usable verification environment for imperative programs. Simpl is independent of a concrete programming language but expressive enough to cover all common language features: mutually recursive procedures, abrupt termination and exceptions, runtime faults, local and global variables, pointers and heap, expressions with side effects, pointers to procedures, partial application and closures, dynamic method invocation and also unbounded nondeterminism. notify = kleing@cse.unsw.edu.au, norbert.schirmer@web.de [Separation_Algebra] title = Separation Algebra author = Gerwin Klein , Rafal Kolanski , Andrew Boyton date = 2012-05-11 topic = Computer science/Programming languages/Logics license = BSD abstract = We present a generic type class implementation of separation algebra for Isabelle/HOL as well as lemmas and generic tactics which can be used directly for any instantiation of the type class.

The ex directory contains example instantiations that include structures such as a heap or virtual memory.

The abstract separation algebra is based upon "Abstract Separation Logic" by Calcagno et al. These theories are also the basis of the ITP 2012 rough diamond "Mechanised Separation Algebra" by the authors.

The aim of this work is to support and significantly reduce the effort for future separation logic developments in Isabelle/HOL by factoring out the part of separation logic that can be treated abstractly once and for all. This includes developing typical default rule sets for reasoning as well as automated tactic support for separation logic. notify = kleing@cse.unsw.edu.au, rafal.kolanski@nicta.com.au [Separation_Logic_Imperative_HOL] title = A Separation Logic Framework for Imperative HOL author = Peter Lammich , Rene Meis date = 2012-11-14 topic = Computer science/Programming languages/Logics license = BSD abstract = We provide a framework for separation-logic based correctness proofs of Imperative HOL programs. Our framework comes with a set of proof methods to automate canonical tasks such as verification condition generation and frame inference. Moreover, we provide a set of examples that show the applicability of our framework. The examples include algorithms on lists, hash-tables, and union-find trees. We also provide abstract interfaces for lists, maps, and sets, that allow to develop generic imperative algorithms and use data-refinement techniques.
As we target Imperative HOL, our programs can be translated to efficiently executable code in various target languages, including ML, OCaml, Haskell, and Scala. notify = lammich@in.tum.de [Inductive_Confidentiality] title = Inductive Study of Confidentiality author = Giampaolo Bella date = 2012-05-02 topic = Computer science/Security abstract = This document contains the full theory files accompanying article Inductive Study of Confidentiality --- for Everyone in Formal Aspects of Computing. They aim at an illustrative and didactic presentation of the Inductive Method of protocol analysis, focusing on the treatment of one of the main goals of security protocols: confidentiality against a threat model. The treatment of confidentiality, which in fact forms a key aspect of all protocol analysis tools, has been found cryptic by many learners of the Inductive Method, hence the motivation for this work. The theory files in this document guide the reader step by step towards design and proof of significant confidentiality theorems. These are developed against two threat models, the standard Dolev-Yao and a more audacious one, the General Attacker, which turns out to be particularly useful also for teaching purposes. notify = giamp@dmi.unict.it [Possibilistic_Noninterference] title = Possibilistic Noninterference author = Andrei Popescu , Johannes Hölzl date = 2012-09-10 topic = Computer science/Security, Computer science/Programming languages/Type systems abstract = We formalize a wide variety of Volpano/Smith-style noninterference notions for a while language with parallel composition. We systematize and classify these notions according to compositionality w.r.t. the language constructs. Compositionality yields sound syntactic criteria (a.k.a. type systems) in a uniform way.

An article about these proofs is published in the proceedings of the conference Certified Programs and Proofs 2012. notify = hoelzl@in.tum.de [SIFUM_Type_Systems] title = A Formalization of Assumptions and Guarantees for Compositional Noninterference author = Sylvia Grewe , Heiko Mantel , Daniel Schoepe date = 2014-04-23 topic = Computer science/Security, Computer science/Programming languages/Type systems abstract = Research in information-flow security aims at developing methods to identify undesired information leaks within programs from private (high) sources to public (low) sinks. For a concurrent system, it is desirable to have compositional analysis methods that allow for analyzing each thread independently and that nevertheless guarantee that the parallel composition of successfully analyzed threads satisfies a global security guarantee. However, such a compositional analysis should not be overly pessimistic about what an environment might do with shared resources. Otherwise, the analysis will reject many intuitively secure programs.

The paper "Assumptions and Guarantees for Compositional Noninterference" by Mantel et. al. presents one solution for this problem: an approach for compositionally reasoning about non-interference in concurrent programs via rely-guarantee-style reasoning. We present an Isabelle/HOL formalization of the concepts and proofs of this approach. notify = [Dependent_SIFUM_Type_Systems] title = A Dependent Security Type System for Concurrent Imperative Programs author = Toby Murray , Robert Sison<>, Edward Pierzchalski<>, Christine Rizkallah notify = toby.murray@unimelb.edu.au date = 2016-06-25 topic = Computer science/Security, Computer science/Programming languages/Type systems abstract = The paper "Compositional Verification and Refinement of Concurrent Value-Dependent Noninterference" by Murray et. al. (CSF 2016) presents a dependent security type system for compositionally verifying a value-dependent noninterference property, defined in (Murray, PLAS 2015), for concurrent programs. This development formalises that security definition, the type system and its soundness proof, and demonstrates its application on some small examples. It was derived from the SIFUM_Type_Systems AFP entry, by Sylvia Grewe, Heiko Mantel and Daniel Schoepe, and whose structure it inherits. extra-history = Change history: [2016-08-19]: Removed unused "stop" parameter and "stop_no_eval" assumption from the sifum_security locale. (revision dbc482d36372) [2016-09-27]: Added security locale support for the imposition of requirements on the initial memory. (revision cce4ceb74ddb) [Dependent_SIFUM_Refinement] title = Compositional Security-Preserving Refinement for Concurrent Imperative Programs author = Toby Murray , Robert Sison<>, Edward Pierzchalski<>, Christine Rizkallah notify = toby.murray@unimelb.edu.au date = 2016-06-28 topic = Computer science/Security abstract = The paper "Compositional Verification and Refinement of Concurrent Value-Dependent Noninterference" by Murray et. al. (CSF 2016) presents a compositional theory of refinement for a value-dependent noninterference property, defined in (Murray, PLAS 2015), for concurrent programs. This development formalises that refinement theory, and demonstrates its application on some small examples. extra-history = Change history: [2016-08-19]: Removed unused "stop" parameters from the sifum_refinement locale. (revision dbc482d36372) [2016-09-02]: TobyM extended "simple" refinement theory to be usable for all bisimulations. (revision 547f31c25f60) [Relational-Incorrectness-Logic] title = An Under-Approximate Relational Logic author = Toby Murray topic = Computer science/Programming languages/Logics, Computer science/Security date = 2020-03-12 notify = toby.murray@unimelb.edu.au abstract = Recently, authors have proposed under-approximate logics for reasoning about programs. So far, all such logics have been confined to reasoning about individual program behaviours. Yet there exist many over-approximate relational logics for reasoning about pairs of programs and relating their behaviours. We present the first under-approximate relational logic, for the simple imperative language IMP. We prove our logic is both sound and complete. Additionally, we show how reasoning in this logic can be decomposed into non-relational reasoning in an under-approximate Hoare logic, mirroring Beringer’s result for over-approximate relational logics. We illustrate the application of our logic on some small examples in which we provably demonstrate the presence of insecurity. [Strong_Security] title = A Formalization of Strong Security author = Sylvia Grewe , Alexander Lux , Heiko Mantel , Jens Sauer date = 2014-04-23 topic = Computer science/Security, Computer science/Programming languages/Type systems abstract = Research in information-flow security aims at developing methods to identify undesired information leaks within programs from private sources to public sinks. Noninterference captures this intuition. Strong security from Sabelfeld and Sands formalizes noninterference for concurrent systems.

We present an Isabelle/HOL formalization of strong security for arbitrary security lattices (Sabelfeld and Sands use a two-element security lattice in the original publication). The formalization includes compositionality proofs for strong security and a soundness proof for a security type system that checks strong security for programs in a simple while language with dynamic thread creation.

Our formalization of the security type system is abstract in the language for expressions and in the semantic side conditions for expressions. It can easily be instantiated with different syntactic approximations for these side conditions. The soundness proof of such an instantiation boils down to showing that these syntactic approximations imply the semantic side conditions. notify = [WHATandWHERE_Security] title = A Formalization of Declassification with WHAT-and-WHERE-Security author = Sylvia Grewe , Alexander Lux , Heiko Mantel , Jens Sauer date = 2014-04-23 topic = Computer science/Security, Computer science/Programming languages/Type systems abstract = Research in information-flow security aims at developing methods to identify undesired information leaks within programs from private sources to public sinks. Noninterference captures this intuition by requiring that no information whatsoever flows from private sources to public sinks. However, in practice this definition is often too strict: Depending on the intuitive desired security policy, the controlled declassification of certain private information (WHAT) at certain points in the program (WHERE) might not result in an undesired information leak.

We present an Isabelle/HOL formalization of such a security property for controlled declassification, namely WHAT&WHERE-security from "Scheduler-Independent Declassification" by Lux, Mantel, and Perner. The formalization includes compositionality proofs for and a soundness proof for a security type system that checks for programs in a simple while language with dynamic thread creation.

Our formalization of the security type system is abstract in the language for expressions and in the semantic side conditions for expressions. It can easily be instantiated with different syntactic approximations for these side conditions. The soundness proof of such an instantiation boils down to showing that these syntactic approximations imply the semantic side conditions.

This Isabelle/HOL formalization uses theories from the entry Strong Security. notify = [VolpanoSmith] title = A Correctness Proof for the Volpano/Smith Security Typing System author = Gregor Snelting , Daniel Wasserrab date = 2008-09-02 topic = Computer science/Programming languages/Type systems, Computer science/Security abstract = The Volpano/Smith/Irvine security type systems requires that variables are annotated as high (secret) or low (public), and provides typing rules which guarantee that secret values cannot leak to public output ports. This property of a program is called confidentiality. For a simple while-language without threads, our proof shows that typeability in the Volpano/Smith system guarantees noninterference. Noninterference means that if two initial states for program execution are low-equivalent, then the final states are low-equivalent as well. This indeed implies that secret values cannot leak to public ports. The proof defines an abstract syntax and operational semantics for programs, formalizes noninterference, and then proceeds by rule induction on the operational semantics. The mathematically most intricate part is the treatment of implicit flows. Note that the Volpano/Smith system is not flow-sensitive and thus quite unprecise, resulting in false alarms. However, due to the correctness property, all potential breaks of confidentiality are discovered. notify = [Abstract-Hoare-Logics] title = Abstract Hoare Logics author = Tobias Nipkow date = 2006-08-08 topic = Computer science/Programming languages/Logics abstract = These therories describe Hoare logics for a number of imperative language constructs, from while-loops to mutually recursive procedures. Both partial and total correctness are treated. In particular a proof system for total correctness of recursive procedures in the presence of unbounded nondeterminism is presented. notify = nipkow@in.tum.de [Stone_Algebras] title = Stone Algebras author = Walter Guttmann notify = walter.guttmann@canterbury.ac.nz date = 2016-09-06 topic = Mathematics/Order abstract = A range of algebras between lattices and Boolean algebras generalise the notion of a complement. We develop a hierarchy of these pseudo-complemented algebras that includes Stone algebras. Independently of this theory we study filters based on partial orders. Both theories are combined to prove Chen and Grätzer's construction theorem for Stone algebras. The latter involves extensive reasoning about algebraic structures in addition to reasoning in algebraic structures. [Kleene_Algebra] title = Kleene Algebra author = Alasdair Armstrong <>, Georg Struth , Tjark Weber date = 2013-01-15 topic = Computer science/Programming languages/Logics, Computer science/Automata and formal languages, Mathematics/Algebra abstract = These files contain a formalisation of variants of Kleene algebras and their most important models as axiomatic type classes in Isabelle/HOL. Kleene algebras are foundational structures in computing with applications ranging from automata and language theory to computational modeling, program construction and verification.

We start with formalising dioids, which are additively idempotent semirings, and expand them by axiomatisations of the Kleene star for finite iteration and an omega operation for infinite iteration. We show that powersets over a given monoid, (regular) languages, sets of paths in a graph, sets of computation traces, binary relations and formal power series form Kleene algebras, and consider further models based on lattices, max-plus semirings and min-plus semirings. We also demonstrate that dioids are closed under the formation of matrices (proofs for Kleene algebras remain to be completed).

On the one hand we have aimed at a reference formalisation of variants of Kleene algebras that covers a wide range of variants and the core theorems in a structured and modular way and provides readable proofs at text book level. On the other hand, we intend to use this algebraic hierarchy and its models as a generic algebraic middle-layer from which programming applications can quickly be explored, implemented and verified. notify = g.struth@sheffield.ac.uk, tjark.weber@it.uu.se [KAT_and_DRA] title = Kleene Algebra with Tests and Demonic Refinement Algebras author = Alasdair Armstrong <>, Victor B. F. Gomes , Georg Struth date = 2014-01-23 topic = Computer science/Programming languages/Logics, Computer science/Automata and formal languages, Mathematics/Algebra abstract = We formalise Kleene algebra with tests (KAT) and demonic refinement algebra (DRA) in Isabelle/HOL. KAT is relevant for program verification and correctness proofs in the partial correctness setting. While DRA targets similar applications in the context of total correctness. Our formalisation contains the two most important models of these algebras: binary relations in the case of KAT and predicate transformers in the case of DRA. In addition, we derive the inference rules for Hoare logic in KAT and its relational model and present a simple formally verified program verification tool prototype based on the algebraic approach. notify = g.struth@dcs.shef.ac.uk [KAD] title = Kleene Algebras with Domain author = Victor B. F. Gomes , Walter Guttmann , Peter Höfner , Georg Struth , Tjark Weber date = 2016-04-12 topic = Computer science/Programming languages/Logics, Computer science/Automata and formal languages, Mathematics/Algebra abstract = Kleene algebras with domain are Kleene algebras endowed with an operation that maps each element of the algebra to its domain of definition (or its complement) in abstract fashion. They form a simple algebraic basis for Hoare logics, dynamic logics or predicate transformer semantics. We formalise a modular hierarchy of algebras with domain and antidomain (domain complement) operations in Isabelle/HOL that ranges from domain and antidomain semigroups to modal Kleene algebras and divergence Kleene algebras. We link these algebras with models of binary relations and program traces. We include some examples from modal logics, termination and program analysis. notify = walter.guttman@canterbury.ac.nz, g.struth@sheffield.ac.uk, tjark.weber@it.uu.se [Regular_Algebras] title = Regular Algebras author = Simon Foster , Georg Struth date = 2014-05-21 topic = Computer science/Automata and formal languages, Mathematics/Algebra abstract = Regular algebras axiomatise the equational theory of regular expressions as induced by regular language identity. We use Isabelle/HOL for a detailed systematic study of regular algebras given by Boffa, Conway, Kozen and Salomaa. We investigate the relationships between these classes, formalise a soundness proof for the smallest class (Salomaa's) and obtain completeness of the largest one (Boffa's) relative to a deep result by Krob. In addition we provide a large collection of regular identities in the general setting of Boffa's axiom. Our regular algebra hierarchy is orthogonal to the Kleene algebra hierarchy in the Archive of Formal Proofs; we have not aimed at an integration for pragmatic reasons. notify = simon.foster@york.ac.uk, g.struth@sheffield.ac.uk [BytecodeLogicJmlTypes] title = A Bytecode Logic for JML and Types author = Lennart Beringer <>, Martin Hofmann date = 2008-12-12 topic = Computer science/Programming languages/Logics abstract = This document contains the Isabelle/HOL sources underlying the paper A bytecode logic for JML and types by Beringer and Hofmann, updated to Isabelle 2008. We present a program logic for a subset of sequential Java bytecode that is suitable for representing both, features found in high-level specification language JML as well as interpretations of high-level type systems. To this end, we introduce a fine-grained collection of assertions, including strong invariants, local annotations and VDM-reminiscent partial-correctness specifications. Thanks to a goal-oriented structure and interpretation of judgements, verification may proceed without recourse to an additional control flow analysis. The suitability for interpreting intensional type systems is illustrated by the proof-carrying-code style encoding of a type system for a first-order functional language which guarantees a constant upper bound on the number of objects allocated throughout an execution, be the execution terminating or non-terminating. Like the published paper, the formal development is restricted to a comparatively small subset of the JVML, lacking (among other features) exceptions, arrays, virtual methods, and static fields. This shortcoming has been overcome meanwhile, as our paper has formed the basis of the Mobius base logic, a program logic for the full sequential fragment of the JVML. Indeed, the present formalisation formed the basis of a subsequent formalisation of the Mobius base logic in the proof assistant Coq, which includes a proof of soundness with respect to the Bicolano operational semantics by Pichardie. notify = [DataRefinementIBP] title = Semantics and Data Refinement of Invariant Based Programs author = Viorel Preoteasa , Ralph-Johan Back date = 2010-05-28 topic = Computer science/Programming languages/Logics abstract = The invariant based programming is a technique of constructing correct programs by first identifying the basic situations (pre- and post-conditions and invariants) that can occur during the execution of the program, and then defining the transitions and proving that they preserve the invariants. Data refinement is a technique of building correct programs working on concrete datatypes as refinements of more abstract programs. In the theories presented here we formalize the predicate transformer semantics for invariant based programs and their data refinement. extra-history = Change history: [2012-01-05]: Moved some general complete lattice properties to the AFP entry Lattice Properties. Changed the definition of the data refinement relation to be more general and updated all corresponding theorems. Added new syntax for demonic and angelic update statements. notify = viorel.preoteasa@aalto.fi [RefinementReactive] title = Formalization of Refinement Calculus for Reactive Systems author = Viorel Preoteasa date = 2014-10-08 topic = Computer science/Programming languages/Logics abstract = We present a formalization of refinement calculus for reactive systems. Refinement calculus is based on monotonic predicate transformers (monotonic functions from sets of post-states to sets of pre-states), and it is a powerful formalism for reasoning about imperative programs. We model reactive systems as monotonic property transformers that transform sets of output infinite sequences into sets of input infinite sequences. Within this semantics we can model refinement of reactive systems, (unbounded) angelic and demonic nondeterminism, sequential composition, and other semantic properties. We can model systems that may fail for some inputs, and we can model compatibility of systems. We can specify systems that have liveness properties using linear temporal logic, and we can refine system specifications into systems based on symbolic transitions systems, suitable for implementations. notify = viorel.preoteasa@aalto.fi [SIFPL] title = Secure information flow and program logics author = Lennart Beringer <>, Martin Hofmann date = 2008-11-10 topic = Computer science/Programming languages/Logics, Computer science/Security abstract = We present interpretations of type systems for secure information flow in Hoare logic, complementing previous encodings in relational program logics. We first treat the imperative language IMP, extended by a simple procedure call mechanism. For this language we consider base-line non-interference in the style of Volpano et al. and the flow-sensitive type system by Hunt and Sands. In both cases, we show how typing derivations may be used to automatically generate proofs in the program logic that certify the absence of illicit flows. We then add instructions for object creation and manipulation, and derive appropriate proof rules for base-line non-interference. As a consequence of our work, standard verification technology may be used for verifying that a concrete program satisfies the non-interference property.

The present proof development represents an update of the formalisation underlying our paper [CSF 2007] and is intended to resolve any ambiguities that may be present in the paper. notify = lennart.beringer@ifi.lmu.de [TLA] title = A Definitional Encoding of TLA* in Isabelle/HOL author = Gudmund Grov , Stephan Merz date = 2011-11-19 topic = Computer science/Programming languages/Logics abstract = We mechanise the logic TLA* [Merz 1999], an extension of Lamport's Temporal Logic of Actions (TLA) [Lamport 1994] for specifying and reasoning about concurrent and reactive systems. Aiming at a framework for mechanising] the verification of TLA (or TLA*) specifications, this contribution reuses some elements from a previous axiomatic encoding of TLA in Isabelle/HOL by the second author [Merz 1998], which has been part of the Isabelle distribution. In contrast to that previous work, we give here a shallow, definitional embedding, with the following highlights:

  • a theory of infinite sequences, including a formalisation of the concepts of stuttering invariance central to TLA and TLA*;
  • a definition of the semantics of TLA*, which extends TLA by a mutually-recursive definition of formulas and pre-formulas, generalising TLA action formulas;
  • a substantial set of derived proof rules, including the TLA* axioms and Lamport's proof rules for system verification;
  • a set of examples illustrating the usage of Isabelle/TLA* for reasoning about systems.
Note that this work is unrelated to the ongoing development of a proof system for the specification language TLA+, which includes an encoding of TLA+ as a new Isabelle object logic [Chaudhuri et al 2010]. notify = ggrov@inf.ed.ac.uk [Compiling-Exceptions-Correctly] title = Compiling Exceptions Correctly author = Tobias Nipkow date = 2004-07-09 topic = Computer science/Programming languages/Compiling abstract = An exception compilation scheme that dynamically creates and removes exception handler entries on the stack. A formalization of an article of the same name by Hutton and Wright. notify = nipkow@in.tum.de [NormByEval] title = Normalization by Evaluation author = Klaus Aehlig , Tobias Nipkow date = 2008-02-18 topic = Computer science/Programming languages/Compiling abstract = This article formalizes normalization by evaluation as implemented in Isabelle. Lambda calculus plus term rewriting is compiled into a functional program with pattern matching. It is proved that the result of a successful evaluation is a) correct, i.e. equivalent to the input, and b) in normal form. notify = nipkow@in.tum.de [Program-Conflict-Analysis] title = Formalization of Conflict Analysis of Programs with Procedures, Thread Creation, and Monitors topic = Computer science/Programming languages/Static analysis author = Peter Lammich , Markus Müller-Olm date = 2007-12-14 abstract = In this work we formally verify the soundness and precision of a static program analysis that detects conflicts (e. g. data races) in programs with procedures, thread creation and monitors with the Isabelle theorem prover. As common in static program analysis, our program model abstracts guarded branching by nondeterministic branching, but completely interprets the call-/return behavior of procedures, synchronization by monitors, and thread creation. The analysis is based on the observation that all conflicts already occur in a class of particularly restricted schedules. These restricted schedules are suited to constraint-system-based program analysis. The formalization is based upon a flowgraph-based program model with an operational semantics as reference point. notify = peter.lammich@uni-muenster.de [Shivers-CFA] title = Shivers' Control Flow Analysis topic = Computer science/Programming languages/Static analysis author = Joachim Breitner date = 2010-11-16 abstract = In his dissertation, Olin Shivers introduces a concept of control flow graphs for functional languages, provides an algorithm to statically derive a safe approximation of the control flow graph and proves this algorithm correct. In this research project, Shivers' algorithms and proofs are formalized in the HOLCF extension of HOL. notify = mail@joachim-breitner.de, nipkow@in.tum.de [Slicing] title = Towards Certified Slicing author = Daniel Wasserrab date = 2008-09-16 topic = Computer science/Programming languages/Static analysis abstract = Slicing is a widely-used technique with applications in e.g. compiler technology and software security. Thus verification of algorithms in these areas is often based on the correctness of slicing, which should ideally be proven independent of concrete programming languages and with the help of well-known verifying techniques such as proof assistants. As a first step in this direction, this contribution presents a framework for dynamic and static intraprocedural slicing based on control flow and program dependence graphs. Abstracting from concrete syntax we base the framework on a graph representation of the program fulfilling certain structural and well-formedness properties.

The formalization consists of the basic framework (in subdirectory Basic/), the correctness proof for dynamic slicing (in subdirectory Dynamic/), the correctness proof for static intraprocedural slicing (in subdirectory StaticIntra/) and instantiations of the framework with a simple While language (in subdirectory While/) and the sophisticated object-oriented bytecode language of Jinja (in subdirectory JinjaVM/). For more information on the framework, see the TPHOLS 2008 paper by Wasserrab and Lochbihler and the PLAS 2009 paper by Wasserrab et al. notify = [HRB-Slicing] title = Backing up Slicing: Verifying the Interprocedural Two-Phase Horwitz-Reps-Binkley Slicer author = Daniel Wasserrab date = 2009-11-13 topic = Computer science/Programming languages/Static analysis abstract = After verifying dynamic and static interprocedural slicing, we present a modular framework for static interprocedural slicing. To this end, we formalized the standard two-phase slicer from Horwitz, Reps and Binkley (see their TOPLAS 12(1) 1990 paper) together with summary edges as presented by Reps et al. (see FSE 1994). The framework is again modular in the programming language by using an abstract CFG, defined via structural and well-formedness properties. Using a weak simulation between the original and sliced graph, we were able to prove the correctness of static interprocedural slicing. We also instantiate our framework with a simple While language with procedures. This shows that the chosen abstractions are indeed valid. notify = nipkow@in.tum.de [WorkerWrapper] title = The Worker/Wrapper Transformation author = Peter Gammie date = 2009-10-30 topic = Computer science/Programming languages/Transformations abstract = Gill and Hutton formalise the worker/wrapper transformation, building on the work of Launchbury and Peyton-Jones who developed it as a way of changing the type at which a recursive function operates. This development establishes the soundness of the technique and several examples of its use. notify = peteg42@gmail.com, nipkow@in.tum.de [JiveDataStoreModel] title = Jive Data and Store Model author = Nicole Rauch , Norbert Schirmer <> date = 2005-06-20 license = LGPL topic = Computer science/Programming languages/Misc abstract = This document presents the formalization of an object-oriented data and store model in Isabelle/HOL. This model is being used in the Java Interactive Verification Environment, Jive. notify = kleing@cse.unsw.edu.au, schirmer@in.tum.de [HotelKeyCards] title = Hotel Key Card System author = Tobias Nipkow date = 2006-09-09 topic = Computer science/Security abstract = Two models of an electronic hotel key card system are contrasted: a state based and a trace based one. Both are defined, verified, and proved equivalent in the theorem prover Isabelle/HOL. It is shown that if a guest follows a certain safety policy regarding her key cards, she can be sure that nobody but her can enter her room. notify = nipkow@in.tum.de [RSAPSS] title = SHA1, RSA, PSS and more author = Christina Lindenberg <>, Kai Wirt <> date = 2005-05-02 topic = Computer science/Security/Cryptography abstract = Formal verification is getting more and more important in computer science. However the state of the art formal verification methods in cryptography are very rudimentary. These theories are one step to provide a tool box allowing the use of formal methods in every aspect of cryptography. Moreover we present a proof of concept for the feasibility of verification techniques to a standard signature algorithm. notify = nipkow@in.tum.de [InformationFlowSlicing] title = Information Flow Noninterference via Slicing author = Daniel Wasserrab date = 2010-03-23 topic = Computer science/Security abstract =

In this contribution, we show how correctness proofs for intra- and interprocedural slicing can be used to prove that slicing is able to guarantee information flow noninterference. Moreover, we also illustrate how to lift the control flow graphs of the respective frameworks such that they fulfil the additional assumptions needed in the noninterference proofs. A detailed description of the intraprocedural proof and its interplay with the slicing framework can be found in the PLAS'09 paper by Wasserrab et al.

This entry contains the part for intra-procedural slicing. See entry InformationFlowSlicing_Inter for the inter-procedural part.

extra-history = Change history: [2016-06-10]: The original entry InformationFlowSlicing contained both the inter- and intra-procedural case was split into two for easier maintenance. notify = [InformationFlowSlicing_Inter] title = Inter-Procedural Information Flow Noninterference via Slicing author = Daniel Wasserrab date = 2010-03-23 topic = Computer science/Security abstract =

In this contribution, we show how correctness proofs for intra- and interprocedural slicing can be used to prove that slicing is able to guarantee information flow noninterference. Moreover, we also illustrate how to lift the control flow graphs of the respective frameworks such that they fulfil the additional assumptions needed in the noninterference proofs. A detailed description of the intraprocedural proof and its interplay with the slicing framework can be found in the PLAS'09 paper by Wasserrab et al.

This entry contains the part for inter-procedural slicing. See entry InformationFlowSlicing for the intra-procedural part.

extra-history = Change history: [2016-06-10]: The original entry InformationFlowSlicing contained both the inter- and intra-procedural case was split into two for easier maintenance. notify = [ComponentDependencies] title = Formalisation and Analysis of Component Dependencies author = Maria Spichkova date = 2014-04-28 topic = Computer science/System description languages abstract = This set of theories presents a formalisation in Isabelle/HOL of data dependencies between components. The approach allows to analyse system structure oriented towards efficient checking of system: it aims at elaborating for a concrete system, which parts of the system are necessary to check a given property. notify = maria.spichkova@rmit.edu.au [Verified-Prover] title = A Mechanically Verified, Efficient, Sound and Complete Theorem Prover For First Order Logic author = Tom Ridge <> date = 2004-09-28 topic = Logic/General logic/Mechanization of proofs abstract = Soundness and completeness for a system of first order logic are formally proved, building on James Margetson's formalization of work by Wainer and Wallen. The completeness proofs naturally suggest an algorithm to derive proofs. This algorithm, which can be implemented tail recursively, is formalized in Isabelle/HOL. The algorithm can be executed via the rewriting tactics of Isabelle. Alternatively, the definitions can be exported to OCaml, yielding a directly executable program. notify = lp15@cam.ac.uk [Completeness] title = Completeness theorem author = James Margetson <>, Tom Ridge <> date = 2004-09-20 topic = Logic/Proof theory abstract = The completeness of first-order logic is proved, following the first five pages of Wainer and Wallen's chapter of the book Proof Theory by Aczel et al., CUP, 1992. Their presentation of formulas allows the proofs to use symmetry arguments. Margetson formalized this theorem by early 2000. The Isar conversion is thanks to Tom Ridge. A paper describing the formalization is available [pdf]. notify = lp15@cam.ac.uk [Ordinal] title = Countable Ordinals author = Brian Huffman date = 2005-11-11 topic = Logic/Set theory abstract = This development defines a well-ordered type of countable ordinals. It includes notions of continuous and normal functions, recursively defined functions over ordinals, least fixed-points, and derivatives. Much of ordinal arithmetic is formalized, including exponentials and logarithms. The development concludes with formalizations of Cantor Normal Form and Veblen hierarchies over normal functions. notify = lcp@cl.cam.ac.uk [Ordinals_and_Cardinals] title = Ordinals and Cardinals author = Andrei Popescu date = 2009-09-01 topic = Logic/Set theory abstract = We develop a basic theory of ordinals and cardinals in Isabelle/HOL, up to the point where some cardinality facts relevant for the ``working mathematician" become available. Unlike in set theory, here we do not have at hand canonical notions of ordinal and cardinal. Therefore, here an ordinal is merely a well-order relation and a cardinal is an ordinal minim w.r.t. order embedding on its field. extra-history = Change history: [2012-09-25]: This entry has been discontinued because it is now part of the Isabelle distribution. notify = uuomul@yahoo.com, nipkow@in.tum.de [FOL-Fitting] title = First-Order Logic According to Fitting author = Stefan Berghofer contributors = Asta Halkjær From date = 2007-08-02 topic = Logic/General logic/Classical first-order logic abstract = We present a formalization of parts of Melvin Fitting's book "First-Order Logic and Automated Theorem Proving". The formalization covers the syntax of first-order logic, its semantics, the model existence theorem, a natural deduction proof calculus together with a proof of correctness and completeness, as well as the Löwenheim-Skolem theorem. extra-history = Change history: [2018-07-21]: Proved completeness theorem for open formulas. Proofs are now written in the declarative style. Enumeration of pairs and datatypes is automated using the Countable theory. notify = berghofe@in.tum.de [Epistemic_Logic] title = Epistemic Logic author = Asta Halkjær From topic = Logic/General logic/Logics of knowledge and belief date = 2018-10-29 notify = ahfrom@dtu.dk abstract = This work is a formalization of epistemic logic with countably many agents. It includes proofs of soundness and completeness for the axiom system K. The completeness proof is based on the textbook "Reasoning About Knowledge" by Fagin, Halpern, Moses and Vardi (MIT Press 1995). [SequentInvertibility] title = Invertibility in Sequent Calculi author = Peter Chapman <> date = 2009-08-28 topic = Logic/Proof theory license = LGPL abstract = The invertibility of the rules of a sequent calculus is important for guiding proof search and can be used in some formalised proofs of Cut admissibility. We present sufficient conditions for when a rule is invertible with respect to a calculus. We illustrate the conditions with examples. It must be noted we give purely syntactic criteria; no guarantees are given as to the suitability of the rules. notify = pc@cs.st-andrews.ac.uk, nipkow@in.tum.de [LinearQuantifierElim] title = Quantifier Elimination for Linear Arithmetic author = Tobias Nipkow date = 2008-01-11 topic = Logic/General logic/Decidability of theories abstract = This article formalizes quantifier elimination procedures for dense linear orders, linear real arithmetic and Presburger arithmetic. In each case both a DNF-based non-elementary algorithm and one or more (doubly) exponential NNF-based algorithms are formalized, including the well-known algorithms by Ferrante and Rackoff and by Cooper. The NNF-based algorithms for dense linear orders are new but based on Ferrante and Rackoff and on an algorithm by Loos and Weisspfenning which simulates infenitesimals. All algorithms are directly executable. In particular, they yield reflective quantifier elimination procedures for HOL itself. The formalization makes heavy use of locales and is therefore highly modular. notify = nipkow@in.tum.de [Nat-Interval-Logic] title = Interval Temporal Logic on Natural Numbers author = David Trachtenherz <> date = 2011-02-23 topic = Logic/General logic/Temporal logic abstract = We introduce a theory of temporal logic operators using sets of natural numbers as time domain, formalized in a shallow embedding manner. The theory comprises special natural intervals (theory IL_Interval: open and closed intervals, continuous and modulo intervals, interval traversing results), operators for shifting intervals to left/right on the number axis as well as expanding/contracting intervals by constant factors (theory IL_IntervalOperators.thy), and ultimately definitions and results for unary and binary temporal operators on arbitrary natural sets (theory IL_TemporalOperators). notify = nipkow@in.tum.de [Recursion-Theory-I] title = Recursion Theory I author = Michael Nedzelsky <> date = 2008-04-05 topic = Logic/Computability abstract = This document presents the formalization of introductory material from recursion theory --- definitions and basic properties of primitive recursive functions, Cantor pairing function and computably enumerable sets (including a proof of existence of a one-complete computably enumerable set and a proof of the Rice's theorem). notify = MichaelNedzelsky@yandex.ru [Free-Boolean-Algebra] topic = Logic/General logic/Classical propositional logic title = Free Boolean Algebra author = Brian Huffman date = 2010-03-29 abstract = This theory defines a type constructor representing the free Boolean algebra over a set of generators. Values of type (α)formula represent propositional formulas with uninterpreted variables from type α, ordered by implication. In addition to all the standard Boolean algebra operations, the library also provides a function for building homomorphisms to any other Boolean algebra type. notify = brianh@cs.pdx.edu [Sort_Encodings] title = Sound and Complete Sort Encodings for First-Order Logic author = Jasmin Christian Blanchette , Andrei Popescu date = 2013-06-27 topic = Logic/General logic/Mechanization of proofs abstract = This is a formalization of the soundness and completeness properties for various efficient encodings of sorts in unsorted first-order logic used by Isabelle's Sledgehammer tool.

Essentially, the encodings proceed as follows: a many-sorted problem is decorated with (as few as possible) tags or guards that make the problem monotonic; then sorts can be soundly erased.

The development employs a formalization of many-sorted first-order logic in clausal form (clauses, structures and the basic properties of the satisfaction relation), which could be of interest as the starting point for other formalizations of first-order logic metatheory. notify = uuomul@yahoo.com [Lambda_Free_RPOs] title = Formalization of Recursive Path Orders for Lambda-Free Higher-Order Terms author = Jasmin Christian Blanchette , Uwe Waldmann , Daniel Wand date = 2016-09-23 topic = Logic/Rewriting abstract = This Isabelle/HOL formalization defines recursive path orders (RPOs) for higher-order terms without lambda-abstraction and proves many useful properties about them. The main order fully coincides with the standard RPO on first-order terms also in the presence of currying, distinguishing it from previous work. An optimized variant is formalized as well. It appears promising as the basis of a higher-order superposition calculus. notify = jasmin.blanchette@gmail.com [Lambda_Free_KBOs] title = Formalization of Knuth–Bendix Orders for Lambda-Free Higher-Order Terms author = Heiko Becker , Jasmin Christian Blanchette , Uwe Waldmann , Daniel Wand date = 2016-11-12 topic = Logic/Rewriting abstract = This Isabelle/HOL formalization defines Knuth–Bendix orders for higher-order terms without lambda-abstraction and proves many useful properties about them. The main order fully coincides with the standard transfinite KBO with subterm coefficients on first-order terms. It appears promising as the basis of a higher-order superposition calculus. notify = jasmin.blanchette@gmail.com [Lambda_Free_EPO] title = Formalization of the Embedding Path Order for Lambda-Free Higher-Order Terms author = Alexander Bentkamp topic = Logic/Rewriting date = 2018-10-19 notify = a.bentkamp@vu.nl abstract = This Isabelle/HOL formalization defines the Embedding Path Order (EPO) for higher-order terms without lambda-abstraction and proves many useful properties about it. In contrast to the lambda-free recursive path orders, it does not fully coincide with RPO on first-order terms, but it is compatible with arbitrary higher-order contexts. [Nested_Multisets_Ordinals] title = Formalization of Nested Multisets, Hereditary Multisets, and Syntactic Ordinals author = Jasmin Christian Blanchette , Mathias Fleury , Dmitriy Traytel date = 2016-11-12 topic = Logic/Rewriting abstract = This Isabelle/HOL formalization introduces a nested multiset datatype and defines Dershowitz and Manna's nested multiset order. The order is proved well founded and linear. By removing one constructor, we transform the nested multisets into hereditary multisets. These are isomorphic to the syntactic ordinals—the ordinals can be recursively expressed in Cantor normal form. Addition, subtraction, multiplication, and linear orders are provided on this type. notify = jasmin.blanchette@gmail.com [Abstract-Rewriting] title = Abstract Rewriting topic = Logic/Rewriting date = 2010-06-14 author = Christian Sternagel , René Thiemann license = LGPL abstract = We present an Isabelle formalization of abstract rewriting (see, e.g., the book by Baader and Nipkow). First, we define standard relations like joinability, meetability, conversion, etc. Then, we formalize important properties of abstract rewrite systems, e.g., confluence and strong normalization. Our main concern is on strong normalization, since this formalization is the basis of CeTA (which is mainly about strong normalization of term rewrite systems). Hence lemmas involving strong normalization constitute by far the biggest part of this theory. One of those is Newman's lemma. extra-history = Change history: [2010-09-17]: Added theories defining several (ordered) semirings related to strong normalization and giving some standard instances.
[2013-10-16]: Generalized delta-orders from rationals to Archimedean fields. notify = christian.sternagel@uibk.ac.at, rene.thiemann@uibk.ac.at [First_Order_Terms] title = First-Order Terms author = Christian Sternagel , René Thiemann topic = Logic/Rewriting, Computer science/Algorithms license = LGPL date = 2018-02-06 notify = c.sternagel@gmail.com, rene.thiemann@uibk.ac.at abstract = We formalize basic results on first-order terms, including matching and a first-order unification algorithm, as well as well-foundedness of the subsumption order. This entry is part of the Isabelle Formalization of Rewriting IsaFoR, where first-order terms are omni-present: the unification algorithm is used to certify several confluence and termination techniques, like critical-pair computation and dependency graph approximations; and the subsumption order is a crucial ingredient for completion. [Free-Groups] title = Free Groups author = Joachim Breitner date = 2010-06-24 topic = Mathematics/Algebra abstract = Free Groups are, in a sense, the most generic kind of group. They are defined over a set of generators with no additional relations in between them. They play an important role in the definition of group presentations and in other fields. This theory provides the definition of Free Group as the set of fully canceled words in the generators. The universal property is proven, as well as some isomorphisms results about Free Groups. extra-history = Change history: [2011-12-11]: Added the Ping Pong Lemma. notify = [CofGroups] title = An Example of a Cofinitary Group in Isabelle/HOL author = Bart Kastermans date = 2009-08-04 topic = Mathematics/Algebra abstract = We formalize the usual proof that the group generated by the function k -> k + 1 on the integers gives rise to a cofinitary group. notify = nipkow@in.tum.de [Group-Ring-Module] title = Groups, Rings and Modules author = Hidetsune Kobayashi <>, L. Chen <>, H. Murao <> date = 2004-05-18 topic = Mathematics/Algebra abstract = The theory of groups, rings and modules is developed to a great depth. Group theory results include Zassenhaus's theorem and the Jordan-Hoelder theorem. The ring theory development includes ideals, quotient rings and the Chinese remainder theorem. The module development includes the Nakayama lemma, exact sequences and Tensor products. notify = lp15@cam.ac.uk [Robbins-Conjecture] title = A Complete Proof of the Robbins Conjecture author = Matthew Wampler-Doty <> date = 2010-05-22 topic = Mathematics/Algebra abstract = This document gives a formalization of the proof of the Robbins conjecture, following A. Mann, A Complete Proof of the Robbins Conjecture, 2003. notify = nipkow@in.tum.de [Valuation] title = Fundamental Properties of Valuation Theory and Hensel's Lemma author = Hidetsune Kobayashi <> date = 2007-08-08 topic = Mathematics/Algebra abstract = Convergence with respect to a valuation is discussed as convergence of a Cauchy sequence. Cauchy sequences of polynomials are defined. They are used to formalize Hensel's lemma. notify = lp15@cam.ac.uk [Rank_Nullity_Theorem] title = Rank-Nullity Theorem in Linear Algebra author = Jose Divasón , Jesús Aransay topic = Mathematics/Algebra date = 2013-01-16 abstract = In this contribution, we present some formalizations based on the HOL-Multivariate-Analysis session of Isabelle. Firstly, a generalization of several theorems of such library are presented. Secondly, some definitions and proofs involving Linear Algebra and the four fundamental subspaces of a matrix are shown. Finally, we present a proof of the result known in Linear Algebra as the ``Rank-Nullity Theorem'', which states that, given any linear map f from a finite dimensional vector space V to a vector space W, then the dimension of V is equal to the dimension of the kernel of f (which is a subspace of V) and the dimension of the range of f (which is a subspace of W). The proof presented here is based on the one given by Sheldon Axler in his book Linear Algebra Done Right. As a corollary of the previous theorem, and taking advantage of the relationship between linear maps and matrices, we prove that, for every matrix A (which has associated a linear map between finite dimensional vector spaces), the sum of its null space and its column space (which is equal to the range of the linear map) is equal to the number of columns of A. extra-history = Change history: [2014-07-14]: Added some generalizations that allow us to formalize the Rank-Nullity Theorem over finite dimensional vector spaces, instead of over the more particular euclidean spaces. Updated abstract. notify = jose.divasonm@unirioja.es, jesus-maria.aransay@unirioja.es [Affine_Arithmetic] title = Affine Arithmetic author = Fabian Immler date = 2014-02-07 topic = Mathematics/Analysis abstract = We give a formalization of affine forms as abstract representations of zonotopes. We provide affine operations as well as overapproximations of some non-affine operations like multiplication and division. Expressions involving those operations can automatically be turned into (executable) functions approximating the original expression in affine arithmetic. extra-history = Change history: [2015-01-31]: added algorithm for zonotope/hyperplane intersection
[2017-09-20]: linear approximations for all symbols from the floatarith data type notify = immler@in.tum.de [Laplace_Transform] title = Laplace Transform author = Fabian Immler topic = Mathematics/Analysis date = 2019-08-14 notify = fimmler@cs.cmu.edu abstract = This entry formalizes the Laplace transform and concrete Laplace transforms for arithmetic functions, frequency shift, integration and (higher) differentiation in the time domain. It proves Lerch's lemma and uniqueness of the Laplace transform for continuous functions. In order to formalize the foundational assumptions, this entry contains a formalization of piecewise continuous functions and functions of exponential order. [Cauchy] title = Cauchy's Mean Theorem and the Cauchy-Schwarz Inequality author = Benjamin Porter <> date = 2006-03-14 topic = Mathematics/Analysis abstract = This document presents the mechanised proofs of two popular theorems attributed to Augustin Louis Cauchy - Cauchy's Mean Theorem and the Cauchy-Schwarz Inequality. notify = kleing@cse.unsw.edu.au [Integration] title = Integration theory and random variables author = Stefan Richter date = 2004-11-19 topic = Mathematics/Analysis abstract = Lebesgue-style integration plays a major role in advanced probability. We formalize concepts of elementary measure theory, real-valued random variables as Borel-measurable functions, and a stepwise inductive definition of the integral itself. All proofs are carried out in human readable style using the Isar language. extra-note = Note: This article is of historical interest only. Lebesgue-style integration and probability theory are now available as part of the Isabelle/HOL distribution (directory Probability). notify = richter@informatik.rwth-aachen.de, nipkow@in.tum.de, hoelzl@in.tum.de [Ordinary_Differential_Equations] title = Ordinary Differential Equations author = Fabian Immler , Johannes Hölzl topic = Mathematics/Analysis date = 2012-04-26 abstract =

Session Ordinary-Differential-Equations formalizes ordinary differential equations (ODEs) and initial value problems. This work comprises proofs for local and global existence of unique solutions (Picard-Lindelöf theorem). Moreover, it contains a formalization of the (continuous or even differentiable) dependency of the flow on initial conditions as the flow of ODEs.

Not in the generated document are the following sessions:

  • HOL-ODE-Numerics: Rigorous numerical algorithms for computing enclosures of solutions based on Runge-Kutta methods and affine arithmetic. Reachability analysis with splitting and reduction at hyperplanes.
  • HOL-ODE-Examples: Applications of the numerical algorithms to concrete systems of ODEs.
  • Lorenz_C0, Lorenz_C1: Verified algorithms for checking C1-information according to Tucker's proof, computation of C0-information.

extra-history = Change history: [2014-02-13]: added an implementation of the Euler method based on affine arithmetic
[2016-04-14]: added flow and variational equation
[2016-08-03]: numerical algorithms for reachability analysis (using second-order Runge-Kutta methods, splitting, and reduction) implemented using Lammich's framework for automatic refinement
[2017-09-20]: added Poincare map and propagation of variational equation in reachability analysis, verified algorithms for C1-information and computations for C0-information of the Lorenz attractor. notify = immler@in.tum.de, hoelzl@in.tum.de [Polynomials] title = Executable Multivariate Polynomials author = Christian Sternagel , René Thiemann , Alexander Maletzky , Fabian Immler , Florian Haftmann , Andreas Lochbihler , Alexander Bentkamp date = 2010-08-10 topic = Mathematics/Analysis, Mathematics/Algebra, Computer science/Algorithms/Mathematical license = LGPL abstract = We define multivariate polynomials over arbitrary (ordered) semirings in combination with (executable) operations like addition, multiplication, and substitution. We also define (weak) monotonicity of polynomials and comparison of polynomials where we provide standard estimations like absolute positiveness or the more recent approach of Neurauter, Zankl, and Middeldorp. Moreover, it is proven that strongly normalizing (monotone) orders can be lifted to strongly normalizing (monotone) orders over polynomials. Our formalization was performed as part of the IsaFoR/CeTA-system which contains several termination techniques. The provided theories have been essential to formalize polynomial interpretations.

This formalization also contains an abstract representation as coefficient functions with finite support and a type of power-products. If this type is ordered by a linear (term) ordering, various additional notions, such as leading power-product, leading coefficient etc., are introduced as well. Furthermore, a lot of generic properties of, and functions on, multivariate polynomials are formalized, including the substitution and evaluation homomorphisms, embeddings of polynomial rings into larger rings (i.e. with one additional indeterminate), homogenization and dehomogenization of polynomials, and the canonical isomorphism between R[X,Y] and R[X][Y]. extra-history = Change history: [2010-09-17]: Moved theories on arbitrary (ordered) semirings to Abstract Rewriting.
[2016-10-28]: Added abstract representation of polynomials and authors Maletzky/Immler.
[2018-01-23]: Added authors Haftmann, Lochbihler after incorporating their formalization of multivariate polynomials based on Polynomial mappings. Moved material from Bentkamp's entry "Deep Learning".
[2019-04-18]: Added material about polynomials whose power-products are represented themselves by polynomial mappings. notify = rene.thiemann@uibk.ac.at, christian.sternagel@uibk.ac.at, alexander.maletzky@risc.jku.at, immler@in.tum.de [Sqrt_Babylonian] title = Computing N-th Roots using the Babylonian Method author = René Thiemann date = 2013-01-03 topic = Mathematics/Analysis license = LGPL abstract = We implement the Babylonian method to compute n-th roots of numbers. We provide precise algorithms for naturals, integers and rationals, and offer an approximation algorithm for square roots over linear ordered fields. Moreover, there are precise algorithms to compute the floor and the ceiling of n-th roots. extra-history = Change history: [2013-10-16]: Added algorithms to compute floor and ceiling of sqrt of integers. [2014-07-11]: Moved NthRoot_Impl from Real-Impl to this entry. notify = rene.thiemann@uibk.ac.at [Sturm_Sequences] title = Sturm's Theorem author = Manuel Eberl date = 2014-01-11 topic = Mathematics/Analysis abstract = Sturm's Theorem states that polynomial sequences with certain properties, so-called Sturm sequences, can be used to count the number of real roots of a real polynomial. This work contains a proof of Sturm's Theorem and code for constructing Sturm sequences efficiently. It also provides the “sturm” proof method, which can decide certain statements about the roots of real polynomials, such as “the polynomial P has exactly n roots in the interval I” or “P(x) > Q(x) for all x ∈ ℝ”. notify = eberlm@in.tum.de [Sturm_Tarski] title = The Sturm-Tarski Theorem author = Wenda Li date = 2014-09-19 topic = Mathematics/Analysis abstract = We have formalized the Sturm-Tarski theorem (also referred as the Tarski theorem), which generalizes Sturm's theorem. Sturm's theorem is usually used as a way to count distinct real roots, while the Sturm-Tarksi theorem forms the basis for Tarski's classic quantifier elimination for real closed field. notify = wl302@cam.ac.uk [Markov_Models] title = Markov Models author = Johannes Hölzl , Tobias Nipkow date = 2012-01-03 topic = Mathematics/Probability theory, Computer science/Automata and formal languages abstract = This is a formalization of Markov models in Isabelle/HOL. It builds on Isabelle's probability theory. The available models are currently Discrete-Time Markov Chains and a extensions of them with rewards.

As application of these models we formalize probabilistic model checking of pCTL formulas, analysis of IPv4 address allocation in ZeroConf and an analysis of the anonymity of the Crowds protocol. See here for the corresponding paper. notify = hoelzl@in.tum.de [Probabilistic_System_Zoo] title = A Zoo of Probabilistic Systems author = Johannes Hölzl , Andreas Lochbihler , Dmitriy Traytel date = 2015-05-27 topic = Computer science/Automata and formal languages abstract = Numerous models of probabilistic systems are studied in the literature. Coalgebra has been used to classify them into system types and compare their expressiveness. We formalize the resulting hierarchy of probabilistic system types by modeling the semantics of the different systems as codatatypes. This approach yields simple and concise proofs, as bisimilarity coincides with equality for codatatypes.

This work is described in detail in the ITP 2015 publication by the authors. notify = traytel@in.tum.de [Density_Compiler] title = A Verified Compiler for Probability Density Functions author = Manuel Eberl , Johannes Hölzl , Tobias Nipkow date = 2014-10-09 topic = Mathematics/Probability theory, Computer science/Programming languages/Compiling abstract = Bhat et al. [TACAS 2013] developed an inductive compiler that computes density functions for probability spaces described by programs in a probabilistic functional language. In this work, we implement such a compiler for a modified version of this language within the theorem prover Isabelle and give a formal proof of its soundness w.r.t. the semantics of the source and target language. Together with Isabelle's code generation for inductive predicates, this yields a fully verified, executable density compiler. The proof is done in two steps: First, an abstract compiler working with abstract functions modelled directly in the theorem prover's logic is defined and proved sound. Then, this compiler is refined to a concrete version that returns a target-language expression.

An article with the same title and authors is published in the proceedings of ESOP 2015. A detailed presentation of this work can be found in the first author's master's thesis. notify = hoelzl@in.tum.de [CAVA_Automata] title = The CAVA Automata Library author = Peter Lammich date = 2014-05-28 topic = Computer science/Automata and formal languages abstract = We report on the graph and automata library that is used in the fully verified LTL model checker CAVA. As most components of CAVA use some type of graphs or automata, a common automata library simplifies assembly of the components and reduces redundancy.

The CAVA Automata Library provides a hierarchy of graph and automata classes, together with some standard algorithms. Its object oriented design allows for sharing of algorithms, theorems, and implementations between its classes, and also simplifies extensions of the library. Moreover, it is integrated into the Automatic Refinement Framework, supporting automatic refinement of the abstract automata types to efficient data structures.

Note that the CAVA Automata Library is work in progress. Currently, it is very specifically tailored towards the requirements of the CAVA model checker. Nevertheless, the formalization techniques presented here allow an extension of the library to a wider scope. Moreover, they are not limited to graph libraries, but apply to class hierarchies in general.

The CAVA Automata Library is described in the paper: Peter Lammich, The CAVA Automata Library, Isabelle Workshop 2014. notify = lammich@in.tum.de [LTL] title = Linear Temporal Logic author = Salomon Sickert contributors = Benedikt Seidl date = 2016-03-01 topic = Logic/General logic/Temporal logic, Computer science/Automata and formal languages abstract = This theory provides a formalisation of linear temporal logic (LTL) and unifies previous formalisations within the AFP. This entry establishes syntax and semantics for this logic and decouples it from existing entries, yielding a common environment for theories reasoning about LTL. Furthermore a parser written in SML and an executable simplifier are provided. extra-history = Change history: [2019-03-12]: Support for additional operators, implementation of common equivalence relations, definition of syntactic fragments of LTL and the minimal disjunctive normal form.
notify = sickert@in.tum.de [LTL_to_GBA] title = Converting Linear-Time Temporal Logic to Generalized Büchi Automata author = Alexander Schimpf , Peter Lammich date = 2014-05-28 topic = Computer science/Automata and formal languages abstract = We formalize linear-time temporal logic (LTL) and the algorithm by Gerth et al. to convert LTL formulas to generalized Büchi automata. We also formalize some syntactic rewrite rules that can be applied to optimize the LTL formula before conversion. Moreover, we integrate the Stuttering Equivalence AFP-Entry by Stefan Merz, adapting the lemma that next-free LTL formula cannot distinguish between stuttering equivalent runs to our setting.

We use the Isabelle Refinement and Collection framework, as well as the Autoref tool, to obtain a refined version of our algorithm, from which efficiently executable code can be extracted. notify = lammich@in.tum.de [Gabow_SCC] title = Verified Efficient Implementation of Gabow's Strongly Connected Components Algorithm author = Peter Lammich date = 2014-05-28 topic = Computer science/Algorithms/Graph, Mathematics/Graph theory abstract = We present an Isabelle/HOL formalization of Gabow's algorithm for finding the strongly connected components of a directed graph. Using data refinement techniques, we extract efficient code that performs comparable to a reference implementation in Java. Our style of formalization allows for re-using large parts of the proofs when defining variants of the algorithm. We demonstrate this by verifying an algorithm for the emptiness check of generalized Büchi automata, re-using most of the existing proofs. notify = lammich@in.tum.de [Promela] title = Promela Formalization author = René Neumann date = 2014-05-28 topic = Computer science/System description languages abstract = We present an executable formalization of the language Promela, the description language for models of the model checker SPIN. This formalization is part of the work for a completely verified model checker (CAVA), but also serves as a useful (and executable!) description of the semantics of the language itself, something that is currently missing. The formalization uses three steps: It takes an abstract syntax tree generated from an SML parser, removes syntactic sugar and enriches it with type information. This further gets translated into a transition system, on which the semantic engine (read: successor function) operates. notify = [CAVA_LTL_Modelchecker] title = A Fully Verified Executable LTL Model Checker author = Javier Esparza , Peter Lammich , René Neumann , Tobias Nipkow , Alexander Schimpf , Jan-Georg Smaus date = 2014-05-28 topic = Computer science/Automata and formal languages abstract = We present an LTL model checker whose code has been completely verified using the Isabelle theorem prover. The checker consists of over 4000 lines of ML code. The code is produced using the Isabelle Refinement Framework, which allows us to split its correctness proof into (1) the proof of an abstract version of the checker, consisting of a few hundred lines of ``formalized pseudocode'', and (2) a verified refinement step in which mathematical sets and other abstract structures are replaced by implementations of efficient structures like red-black trees and functional arrays. This leads to a checker that, while still slower than unverified checkers, can already be used as a trusted reference implementation against which advanced implementations can be tested.

An early version of this model checker is described in the CAV 2013 paper with the same title. notify = lammich@in.tum.de [Fermat3_4] title = Fermat's Last Theorem for Exponents 3 and 4 and the Parametrisation of Pythagorean Triples author = Roelof Oosterhuis <> date = 2007-08-12 topic = Mathematics/Number theory abstract = This document presents the mechanised proofs of

  • Fermat's Last Theorem for exponents 3 and 4 and
  • the parametrisation of Pythagorean Triples.
notify = nipkow@in.tum.de, roelofoosterhuis@gmail.com [Perfect-Number-Thm] title = Perfect Number Theorem author = Mark Ijbema date = 2009-11-22 topic = Mathematics/Number theory abstract = These theories present the mechanised proof of the Perfect Number Theorem. notify = nipkow@in.tum.de [SumSquares] title = Sums of Two and Four Squares author = Roelof Oosterhuis <> date = 2007-08-12 topic = Mathematics/Number theory abstract = This document presents the mechanised proofs of the following results:
  • any prime number of the form 4m+1 can be written as the sum of two squares;
  • any natural number can be written as the sum of four squares
notify = nipkow@in.tum.de, roelofoosterhuis@gmail.com [Lehmer] title = Lehmer's Theorem author = Simon Wimmer , Lars Noschinski date = 2013-07-22 topic = Mathematics/Number theory abstract = In 1927, Lehmer presented criterions for primality, based on the converse of Fermat's litte theorem. This work formalizes the second criterion from Lehmer's paper, a necessary and sufficient condition for primality.

As a side product we formalize some properties of Euler's phi-function, the notion of the order of an element of a group, and the cyclicity of the multiplicative group of a finite field. notify = noschinl@gmail.com, simon.wimmer@tum.de [Pratt_Certificate] title = Pratt's Primality Certificates author = Simon Wimmer , Lars Noschinski date = 2013-07-22 topic = Mathematics/Number theory abstract = In 1975, Pratt introduced a proof system for certifying primes. He showed that a number p is prime iff a primality certificate for p exists. By showing a logarithmic upper bound on the length of the certificates in size of the prime number, he concluded that the decision problem for prime numbers is in NP. This work formalizes soundness and completeness of Pratt's proof system as well as an upper bound for the size of the certificate. notify = noschinl@gmail.com, simon.wimmer@tum.de [Monad_Memo_DP] title = Monadification, Memoization and Dynamic Programming author = Simon Wimmer , Shuwei Hu , Tobias Nipkow topic = Computer science/Programming languages/Transformations, Computer science/Algorithms, Computer science/Functional programming date = 2018-05-22 notify = wimmers@in.tum.de abstract = We present a lightweight framework for the automatic verified (functional or imperative) memoization of recursive functions. Our tool can turn a pure Isabelle/HOL function definition into a monadified version in a state monad or the Imperative HOL heap monad, and prove a correspondence theorem. We provide a variety of memory implementations for the two types of monads. A number of simple techniques allow us to achieve bottom-up computation and space-efficient memoization. The framework’s utility is demonstrated on a number of representative dynamic programming problems. A detailed description of our work can be found in the accompanying paper [2]. [Probabilistic_Timed_Automata] title = Probabilistic Timed Automata author = Simon Wimmer , Johannes Hölzl topic = Mathematics/Probability theory, Computer science/Automata and formal languages date = 2018-05-24 notify = wimmers@in.tum.de, hoelzl@in.tum.de abstract = We present a formalization of probabilistic timed automata (PTA) for which we try to follow the formula MDP + TA = PTA as far as possible: our work starts from our existing formalizations of Markov decision processes (MDP) and timed automata (TA) and combines them modularly. We prove the fundamental result for probabilistic timed automata: the region construction that is known from timed automata carries over to the probabilistic setting. In particular, this allows us to prove that minimum and maximum reachability probabilities can be computed via a reduction to MDP model checking, including the case where one wants to disregard unrealizable behavior. Further information can be found in our ITP paper [2]. [Hidden_Markov_Models] title = Hidden Markov Models author = Simon Wimmer topic = Mathematics/Probability theory, Computer science/Algorithms date = 2018-05-25 notify = wimmers@in.tum.de abstract = This entry contains a formalization of hidden Markov models [3] based on Johannes Hölzl's formalization of discrete time Markov chains [1]. The basic definitions are provided and the correctness of two main (dynamic programming) algorithms for hidden Markov models is proved: the forward algorithm for computing the likelihood of an observed sequence, and the Viterbi algorithm for decoding the most probable hidden state sequence. The Viterbi algorithm is made executable including memoization. Hidden markov models have various applications in natural language processing. For an introduction see Jurafsky and Martin [2]. [ArrowImpossibilityGS] title = Arrow and Gibbard-Satterthwaite author = Tobias Nipkow date = 2008-09-01 topic = Mathematics/Games and economics abstract = This article formalizes two proofs of Arrow's impossibility theorem due to Geanakoplos and derives the Gibbard-Satterthwaite theorem as a corollary. One formalization is based on utility functions, the other one on strict partial orders.

An article about these proofs is found here. notify = nipkow@in.tum.de [SenSocialChoice] title = Some classical results in Social Choice Theory author = Peter Gammie date = 2008-11-09 topic = Mathematics/Games and economics abstract = Drawing on Sen's landmark work "Collective Choice and Social Welfare" (1970), this development proves Arrow's General Possibility Theorem, Sen's Liberal Paradox and May's Theorem in a general setting. The goal was to make precise the classical statements and proofs of these results, and to provide a foundation for more recent results such as the Gibbard-Satterthwaite and Duggan-Schwartz theorems. notify = nipkow@in.tum.de [Vickrey_Clarke_Groves] title = VCG - Combinatorial Vickrey-Clarke-Groves Auctions author = Marco B. Caminati <>, Manfred Kerber , Christoph Lange, Colin Rowat date = 2015-04-30 topic = Mathematics/Games and economics abstract = A VCG auction (named after their inventors Vickrey, Clarke, and Groves) is a generalization of the single-good, second price Vickrey auction to the case of a combinatorial auction (multiple goods, from which any participant can bid on each possible combination). We formalize in this entry VCG auctions, including tie-breaking and prove that the functions for the allocation and the price determination are well-defined. Furthermore we show that the allocation function allocates goods only to participants, only goods in the auction are allocated, and no good is allocated twice. We also show that the price function is non-negative. These properties also hold for the automatically extracted Scala code. notify = mnfrd.krbr@gmail.com [Topology] title = Topology author = Stefan Friedrich <> date = 2004-04-26 topic = Mathematics/Topology abstract = This entry contains two theories. The first, Topology, develops the basic notions of general topology. The second, which can be viewed as a demonstration of the first, is called LList_Topology. It develops the topology of lazy lists. notify = lcp@cl.cam.ac.uk [Knot_Theory] title = Knot Theory author = T.V.H. Prathamesh date = 2016-01-20 topic = Mathematics/Topology abstract = This work contains a formalization of some topics in knot theory. The concepts that were formalized include definitions of tangles, links, framed links and link/tangle equivalence. The formalization is based on a formulation of links in terms of tangles. We further construct and prove the invariance of the Bracket polynomial. Bracket polynomial is an invariant of framed links closely linked to the Jones polynomial. This is perhaps the first attempt to formalize any aspect of knot theory in an interactive proof assistant. notify = prathamesh@imsc.res.in [Graph_Theory] title = Graph Theory author = Lars Noschinski date = 2013-04-28 topic = Mathematics/Graph theory abstract = This development provides a formalization of directed graphs, supporting (labelled) multi-edges and infinite graphs. A polymorphic edge type allows edges to be treated as pairs of vertices, if multi-edges are not required. Formalized properties are i.a. walks (and related concepts), connectedness and subgraphs and basic properties of isomorphisms.

This formalization is used to prove characterizations of Euler Trails, Shortest Paths and Kuratowski subgraphs. notify = noschinl@gmail.com [Planarity_Certificates] title = Planarity Certificates author = Lars Noschinski date = 2015-11-11 topic = Mathematics/Graph theory abstract = This development provides a formalization of planarity based on combinatorial maps and proves that Kuratowski's theorem implies combinatorial planarity. Moreover, it contains verified implementations of programs checking certificates for planarity (i.e., a combinatorial map) or non-planarity (i.e., a Kuratowski subgraph). notify = noschinl@gmail.com [Max-Card-Matching] title = Maximum Cardinality Matching author = Christine Rizkallah date = 2011-07-21 topic = Mathematics/Graph theory abstract =

A matching in a graph G is a subset M of the edges of G such that no two share an endpoint. A matching has maximum cardinality if its cardinality is at least as large as that of any other matching. An odd-set cover OSC of a graph G is a labeling of the nodes of G with integers such that every edge of G is either incident to a node labeled 1 or connects two nodes labeled with the same number i ≥ 2.

This article proves Edmonds theorem:
Let M be a matching in a graph G and let OSC be an odd-set cover of G. For any i ≥ 0, let n(i) be the number of nodes labeled i. If |M| = n(1) + ∑i ≥ 2(n(i) div 2), then M is a maximum cardinality matching.

notify = nipkow@in.tum.de [Girth_Chromatic] title = A Probabilistic Proof of the Girth-Chromatic Number Theorem author = Lars Noschinski date = 2012-02-06 topic = Mathematics/Graph theory abstract = This works presents a formalization of the Girth-Chromatic number theorem in graph theory, stating that graphs with arbitrarily large girth and chromatic number exist. The proof uses the theory of Random Graphs to prove the existence with probabilistic arguments. notify = noschinl@gmail.com [Random_Graph_Subgraph_Threshold] title = Properties of Random Graphs -- Subgraph Containment author = Lars Hupel date = 2014-02-13 topic = Mathematics/Graph theory, Mathematics/Probability theory abstract = Random graphs are graphs with a fixed number of vertices, where each edge is present with a fixed probability. We are interested in the probability that a random graph contains a certain pattern, for example a cycle or a clique. A very high edge probability gives rise to perhaps too many edges (which degrades performance for many algorithms), whereas a low edge probability might result in a disconnected graph. We prove a theorem about a threshold probability such that a higher edge probability will asymptotically almost surely produce a random graph with the desired subgraph. notify = hupel@in.tum.de [Flyspeck-Tame] title = Flyspeck I: Tame Graphs author = Gertrud Bauer <>, Tobias Nipkow date = 2006-05-22 topic = Mathematics/Graph theory abstract = These theories present the verified enumeration of tame plane graphs as defined by Thomas C. Hales in his proof of the Kepler Conjecture in his book Dense Sphere Packings. A Blueprint for Formal Proofs. [CUP 2012]. The values of the constants in the definition of tameness are identical to those in the Flyspeck project. The IJCAR 2006 paper by Nipkow, Bauer and Schultz refers to the original version of Hales' proof, the ITP 2011 paper by Nipkow refers to the Blueprint version of the proof. extra-history = Change history: [2010-11-02]: modified theories to reflect the modified definition of tameness in Hales' revised proof.
[2014-07-03]: modified constants in def of tameness and Archive according to the final state of the Flyspeck proof. notify = nipkow@in.tum.de [Well_Quasi_Orders] title = Well-Quasi-Orders author = Christian Sternagel date = 2012-04-13 topic = Mathematics/Combinatorics abstract = Based on Isabelle/HOL's type class for preorders, we introduce a type class for well-quasi-orders (wqo) which is characterized by the absence of "bad" sequences (our proofs are along the lines of the proof of Nash-Williams, from which we also borrow terminology). Our main results are instantiations for the product type, the list type, and a type of finite trees, which (almost) directly follow from our proofs of (1) Dickson's Lemma, (2) Higman's Lemma, and (3) Kruskal's Tree Theorem. More concretely:
  • If the sets A and B are wqo then their Cartesian product is wqo.
  • If the set A is wqo then the set of finite lists over A is wqo.
  • If the set A is wqo then the set of finite trees over A is wqo.
The research was funded by the Austrian Science Fund (FWF): J3202. extra-history = Change history: [2012-06-11]: Added Kruskal's Tree Theorem.
[2012-12-19]: New variant of Kruskal's tree theorem for terms (as opposed to variadic terms, i.e., trees), plus finite version of the tree theorem as corollary.
[2013-05-16]: Simplified construction of minimal bad sequences.
[2014-07-09]: Simplified proofs of Higman's lemma and Kruskal's tree theorem, based on homogeneous sequences.
[2016-01-03]: An alternative proof of Higman's lemma by open induction.
[2017-06-08]: Proved (classical) equivalence to inductive definition of almost-full relations according to the ITP 2012 paper "Stop When You Are Almost-Full" by Vytiniotis, Coquand, and Wahlstedt. notify = c.sternagel@gmail.com [Marriage] title = Hall's Marriage Theorem author = Dongchen Jiang , Tobias Nipkow date = 2010-12-17 topic = Mathematics/Combinatorics abstract = Two proofs of Hall's Marriage Theorem: one due to Halmos and Vaughan, one due to Rado. extra-history = Change history: [2011-09-09]: Added Rado's proof notify = nipkow@in.tum.de [Bondy] title = Bondy's Theorem author = Jeremy Avigad , Stefan Hetzl date = 2012-10-27 topic = Mathematics/Combinatorics abstract = A proof of Bondy's theorem following B. Bollabas, Combinatorics, 1986, Cambridge University Press. notify = avigad@cmu.edu, hetzl@logic.at [Ramsey-Infinite] title = Ramsey's theorem, infinitary version author = Tom Ridge <> date = 2004-09-20 topic = Mathematics/Combinatorics abstract = This formalization of Ramsey's theorem (infinitary version) is taken from Boolos and Jeffrey, Computability and Logic, 3rd edition, Chapter 26. It differs slightly from the text by assuming a slightly stronger hypothesis. In particular, the induction hypothesis is stronger, holding for any infinite subset of the naturals. This avoids the rather peculiar mapping argument between kj and aikj on p.263, which is unnecessary and slightly mars this really beautiful result. notify = lp15@cam.ac.uk [Derangements] title = Derangements Formula author = Lukas Bulwahn date = 2015-06-27 topic = Mathematics/Combinatorics abstract = The Derangements Formula describes the number of fixpoint-free permutations as a closed formula. This theorem is the 88th theorem in a list of the ``Top 100 Mathematical Theorems''. notify = lukas.bulwahn@gmail.com [Euler_Partition] title = Euler's Partition Theorem author = Lukas Bulwahn date = 2015-11-19 topic = Mathematics/Combinatorics abstract = Euler's Partition Theorem states that the number of partitions with only distinct parts is equal to the number of partitions with only odd parts. The combinatorial proof follows John Harrison's HOL Light formalization. This theorem is the 45th theorem of the Top 100 Theorems list. notify = lukas.bulwahn@gmail.com [Discrete_Summation] title = Discrete Summation author = Florian Haftmann contributors = Amine Chaieb <> date = 2014-04-13 topic = Mathematics/Combinatorics abstract = These theories introduce basic concepts and proofs about discrete summation: shifts, formal summation, falling factorials and stirling numbers. As proof of concept, a simple summation conversion is provided. notify = florian.haftmann@informatik.tu-muenchen.de [Open_Induction] title = Open Induction author = Mizuhito Ogawa <>, Christian Sternagel date = 2012-11-02 topic = Mathematics/Combinatorics abstract = A proof of the open induction schema based on J.-C. Raoult, Proving open properties by induction, Information Processing Letters 29, 1988, pp.19-23.

This research was supported by the Austrian Science Fund (FWF): J3202.

notify = c.sternagel@gmail.com [Category] title = Category Theory to Yoneda's Lemma author = Greg O'Keefe date = 2005-04-21 topic = Mathematics/Category theory license = LGPL abstract = This development proves Yoneda's lemma and aims to be readable by humans. It only defines what is needed for the lemma: categories, functors and natural transformations. Limits, adjunctions and other important concepts are not included. extra-history = Change history: [2010-04-23]: The definition of the constant equinumerous was slightly too weak in the original submission and has been fixed in revision 8c2b5b3c995f. notify = lcp@cl.cam.ac.uk [Category2] title = Category Theory author = Alexander Katovsky date = 2010-06-20 topic = Mathematics/Category theory abstract = This article presents a development of Category Theory in Isabelle/HOL. A Category is defined using records and locales. Functors and Natural Transformations are also defined. The main result that has been formalized is that the Yoneda functor is a full and faithful embedding. We also formalize the completeness of many sorted monadic equational logic. Extensive use is made of the HOLZF theory in both cases. For an informal description see here [pdf]. notify = alexander.katovsky@cantab.net [FunWithFunctions] title = Fun With Functions author = Tobias Nipkow date = 2008-08-26 topic = Mathematics/Misc abstract = This is a collection of cute puzzles of the form ``Show that if a function satisfies the following constraints, it must be ...'' Please add further examples to this collection! notify = nipkow@in.tum.de [FunWithTilings] title = Fun With Tilings author = Tobias Nipkow , Lawrence C. Paulson date = 2008-11-07 topic = Mathematics/Misc abstract = Tilings are defined inductively. It is shown that one form of mutilated chess board cannot be tiled with dominoes, while another one can be tiled with L-shaped tiles. Please add further fun examples of this kind! notify = nipkow@in.tum.de [Lazy-Lists-II] title = Lazy Lists II author = Stefan Friedrich <> date = 2004-04-26 topic = Computer science/Data structures abstract = This theory contains some useful extensions to the LList (lazy list) theory by Larry Paulson, including finite, infinite, and positive llists over an alphabet, as well as the new constants take and drop and the prefix order of llists. Finally, the notions of safety and liveness in the sense of Alpern and Schneider (1985) are defined. notify = lcp@cl.cam.ac.uk [Ribbon_Proofs] title = Ribbon Proofs author = John Wickerson <> date = 2013-01-19 topic = Computer science/Programming languages/Logics abstract = This document concerns the theory of ribbon proofs: a diagrammatic proof system, based on separation logic, for verifying program correctness. We include the syntax, proof rules, and soundness results for two alternative formalisations of ribbon proofs.

Compared to traditional proof outlines, ribbon proofs emphasise the structure of a proof, so are intelligible and pedagogical. Because they contain less redundancy than proof outlines, and allow each proof step to be checked locally, they may be more scalable. Where proof outlines are cumbersome to modify, ribbon proofs can be visually manoeuvred to yield proofs of variant programs. notify = [Koenigsberg_Friendship] title = The Königsberg Bridge Problem and the Friendship Theorem author = Wenda Li date = 2013-07-19 topic = Mathematics/Graph theory abstract = This development provides a formalization of undirected graphs and simple graphs, which are based on Benedikt Nordhoff and Peter Lammich's simple formalization of labelled directed graphs in the archive. Then, with our formalization of graphs, we show both necessary and sufficient conditions for Eulerian trails and circuits as well as the fact that the Königsberg Bridge Problem does not have a solution. In addition, we show the Friendship Theorem in simple graphs. notify = [Tree_Decomposition] title = Tree Decomposition author = Christoph Dittmann notify = date = 2016-05-31 topic = Mathematics/Graph theory abstract = We formalize tree decompositions and tree width in Isabelle/HOL, proving that trees have treewidth 1. We also show that every edge of a tree decomposition is a separation of the underlying graph. As an application of this theorem we prove that complete graphs of size n have treewidth n-1. [Menger] title = Menger's Theorem author = Christoph Dittmann topic = Mathematics/Graph theory date = 2017-02-26 notify = isabelle@christoph-d.de abstract = We present a formalization of Menger's Theorem for directed and undirected graphs in Isabelle/HOL. This well-known result shows that if two non-adjacent distinct vertices u, v in a directed graph have no separator smaller than n, then there exist n internally vertex-disjoint paths from u to v. The version for undirected graphs follows immediately because undirected graphs are a special case of directed graphs. [IEEE_Floating_Point] title = A Formal Model of IEEE Floating Point Arithmetic author = Lei Yu contributors = Fabian Hellauer , Fabian Immler date = 2013-07-27 topic = Computer science/Data structures abstract = This development provides a formal model of IEEE-754 floating-point arithmetic. This formalization, including formal specification of the standard and proofs of important properties of floating-point arithmetic, forms the foundation for verifying programs with floating-point computation. There is also a code generation setup for floats so that we can execute programs using this formalization in functional programming languages. notify = lp15@cam.ac.uk, immler@in.tum.de extra-history = Change history: [2017-09-25]: Added conversions from and to software floating point numbers (by Fabian Hellauer and Fabian Immler).
[2018-02-05]: 'Modernized' representation following the formalization in HOL4: former "float_format" and predicate "is_valid" is now encoded in a type "('e, 'f) float" where 'e and 'f encode the size of exponent and fraction. [Native_Word] title = Native Word author = Andreas Lochbihler contributors = Peter Lammich date = 2013-09-17 topic = Computer science/Data structures abstract = This entry makes machine words and machine arithmetic available for code generation from Isabelle/HOL. It provides a common abstraction that hides the differences between the different target languages. The code generator maps these operations to the APIs of the target languages. Apart from that, we extend the available bit operations on types int and integer, and map them to the operations in the target languages. extra-history = Change history: [2013-11-06]: added conversion function between native words and characters (revision fd23d9a7fe3a)
[2014-03-31]: added words of default size in the target language (by Peter Lammich) (revision 25caf5065833)
[2014-10-06]: proper test setup with compilation and execution of tests in all target languages (revision 5d7a1c9ae047)
[2017-09-02]: added 64-bit words (revision c89f86244e3c)
[2018-07-15]: added cast operators for default-size words (revision fc1f1fb8dd30)
notify = mail@andreas-lochbihler.de [XML] title = XML author = Christian Sternagel , René Thiemann date = 2014-10-03 topic = Computer science/Functional programming, Computer science/Data structures abstract = This entry provides an XML library for Isabelle/HOL. This includes parsing and pretty printing of XML trees as well as combinators for transforming XML trees into arbitrary user-defined data. The main contribution of this entry is an interface (fit for code generation) that allows for communication between verified programs formalized in Isabelle/HOL and the outside world via XML. This library was developed as part of the IsaFoR/CeTA project to which we refer for examples of its usage. notify = c.sternagel@gmail.com, rene.thiemann@uibk.ac.at [HereditarilyFinite] title = The Hereditarily Finite Sets author = Lawrence C. Paulson date = 2013-11-17 topic = Logic/Set theory abstract = The theory of hereditarily finite sets is formalised, following the development of Swierczkowski. An HF set is a finite collection of other HF sets; they enjoy an induction principle and satisfy all the axioms of ZF set theory apart from the axiom of infinity, which is negated. All constructions that are possible in ZF set theory (Cartesian products, disjoint sums, natural numbers, functions) without using infinite sets are possible here. The definition of addition for the HF sets follows Kirby. This development forms the foundation for the Isabelle proof of Gödel's incompleteness theorems, which has been formalised separately. extra-history = Change history: [2015-02-23]: Added the theory "Finitary" defining the class of types that can be embedded in hf, including int, char, option, list, etc. notify = lp15@cam.ac.uk [Incompleteness] title = Gödel's Incompleteness Theorems author = Lawrence C. Paulson date = 2013-11-17 topic = Logic/Proof theory abstract = Gödel's two incompleteness theorems are formalised, following a careful presentation by Swierczkowski, in the theory of hereditarily finite sets. This represents the first ever machine-assisted proof of the second incompleteness theorem. Compared with traditional formalisations using Peano arithmetic (see e.g. Boolos), coding is simpler, with no need to formalise the notion of multiplication (let alone that of a prime number) in the formalised calculus upon which the theorem is based. However, other technical problems had to be solved in order to complete the argument. notify = lp15@cam.ac.uk [Finite_Automata_HF] title = Finite Automata in Hereditarily Finite Set Theory author = Lawrence C. Paulson date = 2015-02-05 topic = Computer science/Automata and formal languages abstract = Finite Automata, both deterministic and non-deterministic, for regular languages. The Myhill-Nerode Theorem. Closure under intersection, concatenation, etc. Regular expressions define regular languages. Closure under reversal; the powerset construction mapping NFAs to DFAs. Left and right languages; minimal DFAs. Brzozowski's minimization algorithm. Uniqueness up to isomorphism of minimal DFAs. notify = lp15@cam.ac.uk [Decreasing-Diagrams] title = Decreasing Diagrams author = Harald Zankl license = LGPL date = 2013-11-01 topic = Logic/Rewriting abstract = This theory contains a formalization of decreasing diagrams showing that any locally decreasing abstract rewrite system is confluent. We consider the valley (van Oostrom, TCS 1994) and the conversion version (van Oostrom, RTA 2008) and closely follow the original proofs. As an application we prove Newman's lemma. notify = Harald.Zankl@uibk.ac.at [Decreasing-Diagrams-II] title = Decreasing Diagrams II author = Bertram Felgenhauer license = LGPL date = 2015-08-20 topic = Logic/Rewriting abstract = This theory formalizes the commutation version of decreasing diagrams for Church-Rosser modulo. The proof follows Felgenhauer and van Oostrom (RTA 2013). The theory also provides important specializations, in particular van Oostrom’s conversion version (TCS 2008) of decreasing diagrams. notify = bertram.felgenhauer@uibk.ac.at [GoedelGod] title = Gödel's God in Isabelle/HOL author = Christoph Benzmüller , Bruno Woltzenlogel Paleo date = 2013-11-12 topic = Logic/Philosophical aspects abstract = Dana Scott's version of Gödel's proof of God's existence is formalized in quantified modal logic KB (QML KB). QML KB is modeled as a fragment of classical higher-order logic (HOL); thus, the formalization is essentially a formalization in HOL. notify = lp15@cam.ac.uk, c.benzmueller@fu-berlin.de [Types_Tableaus_and_Goedels_God] title = Types, Tableaus and Gödel’s God in Isabelle/HOL author = David Fuenmayor , Christoph Benzmüller topic = Logic/Philosophical aspects date = 2017-05-01 notify = davfuenmayor@gmail.com, c.benzmueller@gmail.com abstract = A computer-formalisation of the essential parts of Fitting's textbook "Types, Tableaus and Gödel's God" in Isabelle/HOL is presented. In particular, Fitting's (and Anderson's) variant of the ontological argument is verified and confirmed. This variant avoids the modal collapse, which has been criticised as an undesirable side-effect of Kurt Gödel's (and Dana Scott's) versions of the ontological argument. Fitting's work is employing an intensional higher-order modal logic, which we shallowly embed here in classical higher-order logic. We then utilize the embedded logic for the formalisation of Fitting's argument. (See also the earlier AFP entry ``Gödel's God in Isabelle/HOL''.) [GewirthPGCProof] title = Formalisation and Evaluation of Alan Gewirth's Proof for the Principle of Generic Consistency in Isabelle/HOL author = David Fuenmayor , Christoph Benzmüller topic = Logic/Philosophical aspects date = 2018-10-30 notify = davfuenmayor@gmail.com, c.benzmueller@gmail.com abstract = An ambitious ethical theory ---Alan Gewirth's "Principle of Generic Consistency"--- is encoded and analysed in Isabelle/HOL. Gewirth's theory has stirred much attention in philosophy and ethics and has been proposed as a potential means to bound the impact of artificial general intelligence. extra-history = Change history: [2019-04-09]: added proof for a stronger variant of the PGC and examplary inferences (revision 88182cb0a2f6)
[Lowe_Ontological_Argument] title = Computer-assisted Reconstruction and Assessment of E. J. Lowe's Modal Ontological Argument author = David Fuenmayor , Christoph Benzmüller topic = Logic/Philosophical aspects date = 2017-09-21 notify = davfuenmayor@gmail.com, c.benzmueller@gmail.com abstract = Computers may help us to understand --not just verify-- philosophical arguments. By utilizing modern proof assistants in an iterative interpretive process, we can reconstruct and assess an argument by fully formal means. Through the mechanization of a variant of St. Anselm's ontological argument by E. J. Lowe, which is a paradigmatic example of a natural-language argument with strong ties to metaphysics and religion, we offer an ideal showcase for our computer-assisted interpretive method. [AnselmGod] title = Anselm's God in Isabelle/HOL author = Ben Blumson topic = Logic/Philosophical aspects date = 2017-09-06 notify = benblumson@gmail.com abstract = Paul Oppenheimer and Edward Zalta's formalisation of Anselm's ontological argument for the existence of God is automated by embedding a free logic for definite descriptions within Isabelle/HOL. [Tail_Recursive_Functions] title = A General Method for the Proof of Theorems on Tail-recursive Functions author = Pasquale Noce date = 2013-12-01 topic = Computer science/Functional programming abstract =

Tail-recursive function definitions are sometimes more straightforward than alternatives, but proving theorems on them may be roundabout because of the peculiar form of the resulting recursion induction rules.

This paper describes a proof method that provides a general solution to this problem by means of suitable invariants over inductive sets, and illustrates the application of such method by examining two case studies.

notify = pasquale.noce.lavoro@gmail.com [CryptoBasedCompositionalProperties] title = Compositional Properties of Crypto-Based Components author = Maria Spichkova date = 2014-01-11 topic = Computer science/Security abstract = This paper presents an Isabelle/HOL set of theories which allows the specification of crypto-based components and the verification of their composition properties wrt. cryptographic aspects. We introduce a formalisation of the security property of data secrecy, the corresponding definitions and proofs. Please note that here we import the Isabelle/HOL theory ListExtras.thy, presented in the AFP entry FocusStreamsCaseStudies-AFP. notify = maria.spichkova@rmit.edu.au [Featherweight_OCL] title = Featherweight OCL: A Proposal for a Machine-Checked Formal Semantics for OCL 2.5 author = Achim D. Brucker , Frédéric Tuong , Burkhart Wolff date = 2014-01-16 topic = Computer science/System description languages abstract = The Unified Modeling Language (UML) is one of the few modeling languages that is widely used in industry. While UML is mostly known as diagrammatic modeling language (e.g., visualizing class models), it is complemented by a textual language, called Object Constraint Language (OCL). The current version of OCL is based on a four-valued logic that turns UML into a formal language. Any type comprises the elements "invalid" and "null" which are propagated as strict and non-strict, respectively. Unfortunately, the former semi-formal semantics of this specification language, captured in the "Annex A" of the OCL standard, leads to different interpretations of corner cases. We formalize the core of OCL: denotational definitions, a logical calculus and operational rules that allow for the execution of OCL expressions by a mixture of term rewriting and code compilation. Our formalization reveals several inconsistencies and contradictions in the current version of the OCL standard. Overall, this document is intended to provide the basis for a machine-checked text "Annex A" of the OCL standard targeting at tool implementors. extra-history = Change history: [2015-10-13]: afp-devel@ea3b38fc54d6 and hol-testgen@12148
   Update of Featherweight OCL including a change in the abstract.
[2014-01-16]: afp-devel@9091ce05cb20 and hol-testgen@10241
   New Entry: Featherweight OCL notify = brucker@spamfence.net, tuong@users.gforge.inria.fr, wolff@lri.fr [Relation_Algebra] title = Relation Algebra author = Alasdair Armstrong <>, Simon Foster , Georg Struth , Tjark Weber date = 2014-01-25 topic = Mathematics/Algebra abstract = Tarski's algebra of binary relations is formalised along the lines of the standard textbooks of Maddux and Schmidt and Ströhlein. This includes relation-algebraic concepts such as subidentities, vectors and a domain operation as well as various notions associated to functions. Relation algebras are also expanded by a reflexive transitive closure operation, and they are linked with Kleene algebras and models of binary relations and Boolean matrices. notify = g.struth@sheffield.ac.uk, tjark.weber@it.uu.se [PSemigroupsConvolution] title = Partial Semigroups and Convolution Algebras author = Brijesh Dongol , Victor B. F. Gomes , Ian J. Hayes , Georg Struth topic = Mathematics/Algebra date = 2017-06-13 notify = g.struth@sheffield.ac.uk, victor.gomes@cl.cam.ac.uk abstract = Partial Semigroups are relevant to the foundations of quantum mechanics and combinatorics as well as to interval and separation logics. Convolution algebras can be understood either as algebras of generalised binary modalities over ternary Kripke frames, in particular over partial semigroups, or as algebras of quantale-valued functions which are equipped with a convolution-style operation of multiplication that is parametrised by a ternary relation. Convolution algebras provide algebraic semantics for various substructural logics, including categorial, relevance and linear logics, for separation logic and for interval logics; they cover quantitative and qualitative applications. These mathematical components for partial semigroups and convolution algebras provide uniform foundations from which models of computation based on relations, program traces or pomsets, and verification components for separation or interval temporal logics can be built with little effort. [Secondary_Sylow] title = Secondary Sylow Theorems author = Jakob von Raumer date = 2014-01-28 topic = Mathematics/Algebra abstract = These theories extend the existing proof of the first Sylow theorem (written by Florian Kammueller and L. C. Paulson) by what are often called the second, third and fourth Sylow theorems. These theorems state propositions about the number of Sylow p-subgroups of a group and the fact that they are conjugate to each other. The proofs make use of an implementation of group actions and their properties. notify = psxjv4@nottingham.ac.uk [Jordan_Hoelder] title = The Jordan-Hölder Theorem author = Jakob von Raumer date = 2014-09-09 topic = Mathematics/Algebra abstract = This submission contains theories that lead to a formalization of the proof of the Jordan-Hölder theorem about composition series of finite groups. The theories formalize the notions of isomorphism classes of groups, simple groups, normal series, composition series, maximal normal subgroups. Furthermore, they provide proofs of the second isomorphism theorem for groups, the characterization theorem for maximal normal subgroups as well as many useful lemmas about normal subgroups and factor groups. The proof is inspired by course notes of Stuart Rankin. notify = psxjv4@nottingham.ac.uk [Cayley_Hamilton] title = The Cayley-Hamilton Theorem author = Stephan Adelsberger , Stefan Hetzl , Florian Pollak date = 2014-09-15 topic = Mathematics/Algebra abstract = This document contains a proof of the Cayley-Hamilton theorem based on the development of matrices in HOL/Multivariate Analysis. notify = stvienna@gmail.com [Probabilistic_Noninterference] title = Probabilistic Noninterference author = Andrei Popescu , Johannes Hölzl date = 2014-03-11 topic = Computer science/Security abstract = We formalize a probabilistic noninterference for a multi-threaded language with uniform scheduling, where probabilistic behaviour comes from both the scheduler and the individual threads. We define notions probabilistic noninterference in two variants: resumption-based and trace-based. For the resumption-based notions, we prove compositionality w.r.t. the language constructs and establish sound type-system-like syntactic criteria. This is a formalization of the mathematical development presented at CPP 2013 and CALCO 2013. It is the probabilistic variant of the Possibilistic Noninterference AFP entry. notify = hoelzl@in.tum.de [HyperCTL] title = A shallow embedding of HyperCTL* author = Markus N. Rabe , Peter Lammich , Andrei Popescu date = 2014-04-16 topic = Computer science/Security, Logic/General logic/Temporal logic abstract = We formalize HyperCTL*, a temporal logic for expressing security properties. We first define a shallow embedding of HyperCTL*, within which we prove inductive and coinductive rules for the operators. Then we show that a HyperCTL* formula captures Goguen-Meseguer noninterference, a landmark information flow property. We also define a deep embedding and connect it to the shallow embedding by a denotational semantics, for which we prove sanity w.r.t. dependence on the free variables. Finally, we show that under some finiteness assumptions about the model, noninterference is given by a (finitary) syntactic formula. notify = uuomul@yahoo.com [Bounded_Deducibility_Security] title = Bounded-Deducibility Security author = Andrei Popescu , Peter Lammich date = 2014-04-22 topic = Computer science/Security abstract = This is a formalization of bounded-deducibility security (BD security), a flexible notion of information-flow security applicable to arbitrary input-output automata. It generalizes Sutherland's classic notion of nondeducibility by factoring in declassification bounds and trigger, whereas nondeducibility states that, in a system, information cannot flow between specified sources and sinks, BD security indicates upper bounds for the flow and triggers under which these upper bounds are no longer guaranteed. notify = uuomul@yahoo.com, lammich@in.tum.de [Network_Security_Policy_Verification] title = Network Security Policy Verification author = Cornelius Diekmann date = 2014-07-04 topic = Computer science/Security abstract = We present a unified theory for verifying network security policies. A security policy is represented as directed graph. To check high-level security goals, security invariants over the policy are expressed. We cover monotonic security invariants, i.e. prohibiting more does not harm security. We provide the following contributions for the security invariant theory.
  • Secure auto-completion of scenario-specific knowledge, which eases usability.
  • Security violations can be repaired by tightening the policy iff the security invariants hold for the deny-all policy.
  • An algorithm to compute a security policy.
  • A formalization of stateful connection semantics in network security mechanisms.
  • An algorithm to compute a secure stateful implementation of a policy.
  • An executable implementation of all the theory.
  • Examples, ranging from an aircraft cabin data network to the analysis of a large real-world firewall.
  • More examples: A fully automated translation of high-level security goals to both firewall and SDN configurations (see Examples/Distributed_WebApp.thy).
For a detailed description, see extra-history = Change history: [2015-04-14]: Added Distributed WebApp example and improved graphviz visualization (revision 4dde08ca2ab8)
notify = diekmann@net.in.tum.de [Abstract_Completeness] title = Abstract Completeness author = Jasmin Christian Blanchette , Andrei Popescu , Dmitriy Traytel date = 2014-04-16 topic = Logic/Proof theory abstract = A formalization of an abstract property of possibly infinite derivation trees (modeled by a codatatype), representing the core of a proof (in Beth/Hintikka style) of the first-order logic completeness theorem, independent of the concrete syntax or inference rules. This work is described in detail in the IJCAR 2014 publication by the authors. The abstract proof can be instantiated for a wide range of Gentzen and tableau systems as well as various flavors of FOL---e.g., with or without predicates, equality, or sorts. Here, we give only a toy example instantiation with classical propositional logic. A more serious instance---many-sorted FOL with equality---is described elsewhere [Blanchette and Popescu, FroCoS 2013]. notify = traytel@in.tum.de [Pop_Refinement] title = Pop-Refinement author = Alessandro Coglio date = 2014-07-03 topic = Computer science/Programming languages/Misc abstract = Pop-refinement is an approach to stepwise refinement, carried out inside an interactive theorem prover by constructing a monotonically decreasing sequence of predicates over deeply embedded target programs. The sequence starts with a predicate that characterizes the possible implementations, and ends with a predicate that characterizes a unique program in explicit syntactic form. Pop-refinement enables more requirements (e.g. program-level and non-functional) to be captured in the initial specification and preserved through refinement. Security requirements expressed as hyperproperties (i.e. predicates over sets of traces) are always preserved by pop-refinement, unlike the popular notion of refinement as trace set inclusion. Two simple examples in Isabelle/HOL are presented, featuring program-level requirements, non-functional requirements, and hyperproperties. notify = coglio@kestrel.edu [VectorSpace] title = Vector Spaces author = Holden Lee date = 2014-08-29 topic = Mathematics/Algebra abstract = This formalisation of basic linear algebra is based completely on locales, building off HOL-Algebra. It includes basic definitions: linear combinations, span, linear independence; linear transformations; interpretation of function spaces as vector spaces; the direct sum of vector spaces, sum of subspaces; the replacement theorem; existence of bases in finite-dimensional; vector spaces, definition of dimension; the rank-nullity theorem. Some concepts are actually defined and proved for modules as they also apply there. Infinite-dimensional vector spaces are supported, but dimension is only supported for finite-dimensional vector spaces. The proofs are standard; the proofs of the replacement theorem and rank-nullity theorem roughly follow the presentation in Linear Algebra by Friedberg, Insel, and Spence. The rank-nullity theorem generalises the existing development in the Archive of Formal Proof (originally using type classes, now using a mix of type classes and locales). notify = holdenl@princeton.edu [Special_Function_Bounds] title = Real-Valued Special Functions: Upper and Lower Bounds author = Lawrence C. Paulson date = 2014-08-29 topic = Mathematics/Analysis abstract = This development proves upper and lower bounds for several familiar real-valued functions. For sin, cos, exp and sqrt, it defines and verifies infinite families of upper and lower bounds, mostly based on Taylor series expansions. For arctan, ln and exp, it verifies a finite collection of upper and lower bounds, originally obtained from the functions' continued fraction expansions using the computer algebra system Maple. A common theme in these proofs is to take the difference between a function and its approximation, which should be zero at one point, and then consider the sign of the derivative. The immediate purpose of this development is to verify axioms used by MetiTarski, an automatic theorem prover for real-valued special functions. Crucial to MetiTarski's operation is the provision of upper and lower bounds for each function of interest. notify = lp15@cam.ac.uk [Landau_Symbols] title = Landau Symbols author = Manuel Eberl date = 2015-07-14 topic = Mathematics/Analysis abstract = This entry provides Landau symbols to describe and reason about the asymptotic growth of functions for sufficiently large inputs. A number of simplification procedures are provided for additional convenience: cancelling of dominated terms in sums under a Landau symbol, cancelling of common factors in products, and a decision procedure for Landau expressions containing products of powers of functions like x, ln(x), ln(ln(x)) etc. notify = eberlm@in.tum.de [Error_Function] title = The Error Function author = Manuel Eberl topic = Mathematics/Analysis date = 2018-02-06 notify = eberlm@in.tum.de abstract =

This entry provides the definitions and basic properties of the complex and real error function erf and the complementary error function erfc. Additionally, it gives their full asymptotic expansions.

[Akra_Bazzi] title = The Akra-Bazzi theorem and the Master theorem author = Manuel Eberl date = 2015-07-14 topic = Mathematics/Analysis abstract = This article contains a formalisation of the Akra-Bazzi method based on a proof by Leighton. It is a generalisation of the well-known Master Theorem for analysing the complexity of Divide & Conquer algorithms. We also include a generalised version of the Master theorem based on the Akra-Bazzi theorem, which is easier to apply than the Akra-Bazzi theorem itself.

Some proof methods that facilitate applying the Master theorem are also included. For a more detailed explanation of the formalisation and the proof methods, see the accompanying paper (publication forthcoming). notify = eberlm@in.tum.de [Dirichlet_Series] title = Dirichlet Series author = Manuel Eberl topic = Mathematics/Number theory date = 2017-10-12 notify = eberlm@in.tum.de abstract = This entry is a formalisation of much of Chapters 2, 3, and 11 of Apostol's “Introduction to Analytic Number Theory”. This includes:

  • Definitions and basic properties for several number-theoretic functions (Euler's φ, Möbius μ, Liouville's λ, the divisor function σ, von Mangoldt's Λ)
  • Executable code for most of these functions, the most efficient implementations using the factoring algorithm by Thiemann et al.
  • Dirichlet products and formal Dirichlet series
  • Analytic results connecting convergent formal Dirichlet series to complex functions
  • Euler product expansions
  • Asymptotic estimates of number-theoretic functions including the density of squarefree integers and the average number of divisors of a natural number
These results are useful as a basis for developing more number-theoretic results, such as the Prime Number Theorem. [Gauss_Sums] title = Gauss Sums and the Pólya–Vinogradov Inequality author = Rodrigo Raya , Manuel Eberl topic = Mathematics/Number theory date = 2019-12-10 notify = manuel.eberl@tum.de abstract =

This article provides a full formalisation of Chapter 8 of Apostol's Introduction to Analytic Number Theory. Subjects that are covered are:

  • periodic arithmetic functions and their finite Fourier series
  • (generalised) Ramanujan sums
  • Gauss sums and separable characters
  • induced moduli and primitive characters
  • the Pólya—Vinogradov inequality
[Zeta_Function] title = The Hurwitz and Riemann ζ Functions author = Manuel Eberl topic = Mathematics/Number theory, Mathematics/Analysis date = 2017-10-12 notify = eberlm@in.tum.de abstract =

This entry builds upon the results about formal and analytic Dirichlet series to define the Hurwitz ζ function ζ(a,s) and, based on that, the Riemann ζ function ζ(s). This is done by first defining them for ℜ(z) > 1 and then successively extending the domain to the left using the Euler–MacLaurin formula.

Apart from the most basic facts such as analyticity, the following results are provided:

  • the Stieltjes constants and the Laurent expansion of ζ(s) at s = 1
  • the non-vanishing of ζ(s) for ℜ(z) ≥ 1
  • the relationship between ζ(a,s) and Γ
  • the special values at negative integers and positive even integers
  • Hurwitz's formula and the reflection formula for ζ(s)
  • the Hadjicostas–Chapman formula

The entry also contains Euler's analytic proof of the infinitude of primes, based on the fact that ζ(s) has a pole at s = 1.

[Linear_Recurrences] title = Linear Recurrences author = Manuel Eberl topic = Mathematics/Analysis date = 2017-10-12 notify = eberlm@in.tum.de abstract =

Linear recurrences with constant coefficients are an interesting class of recurrence equations that can be solved explicitly. The most famous example are certainly the Fibonacci numbers with the equation f(n) = f(n-1) + f(n - 2) and the quite non-obvious closed form (φn - (-φ)-n) / √5 where φ is the golden ratio.

In this work, I build on existing tools in Isabelle – such as formal power series and polynomial factorisation algorithms – to develop a theory of these recurrences and derive a fully executable solver for them that can be exported to programming languages like Haskell.

[Lambert_W] title = The Lambert W Function on the Reals author = Manuel Eberl topic = Mathematics/Analysis date = 2020-04-24 notify = eberlm@in.tum.de abstract =

The Lambert W function is a multi-valued function defined as the inverse function of xx ex. Besides numerous applications in combinatorics, physics, and engineering, it also frequently occurs when solving equations containing both ex and x, or both x and log x.

This article provides a definition of the two real-valued branches W0(x) and W-1(x) and proves various properties such as basic identities and inequalities, monotonicity, differentiability, asymptotic expansions, and the MacLaurin series of W0(x) at x = 0.

[Cartan_FP] title = The Cartan Fixed Point Theorems author = Lawrence C. Paulson date = 2016-03-08 topic = Mathematics/Analysis abstract = The Cartan fixed point theorems concern the group of holomorphic automorphisms on a connected open set of Cn. Ciolli et al. have formalised the one-dimensional case of these theorems in HOL Light. This entry contains their proofs, ported to Isabelle/HOL. Thus it addresses the authors' remark that "it would be important to write a formal proof in a language that can be read by both humans and machines". notify = lp15@cam.ac.uk [Gauss_Jordan] title = Gauss-Jordan Algorithm and Its Applications author = Jose Divasón , Jesús Aransay topic = Computer science/Algorithms/Mathematical date = 2014-09-03 abstract = The Gauss-Jordan algorithm states that any matrix over a field can be transformed by means of elementary row operations to a matrix in reduced row echelon form. The formalization is based on the Rank Nullity Theorem entry of the AFP and on the HOL-Multivariate-Analysis session of Isabelle, where matrices are represented as functions over finite types. We have set up the code generator to make this representation executable. In order to improve the performance, a refinement to immutable arrays has been carried out. We have formalized some of the applications of the Gauss-Jordan algorithm. Thanks to this development, the following facts can be computed over matrices whose elements belong to a field: Ranks, Determinants, Inverses, Bases and dimensions and Solutions of systems of linear equations. Code can be exported to SML and Haskell. notify = jose.divasonm@unirioja.es, jesus-maria.aransay@unirioja.es [Echelon_Form] title = Echelon Form author = Jose Divasón , Jesús Aransay topic = Computer science/Algorithms/Mathematical, Mathematics/Algebra date = 2015-02-12 abstract = We formalize an algorithm to compute the Echelon Form of a matrix. We have proved its existence over Bézout domains and made it executable over Euclidean domains, such as the integer ring and the univariate polynomials over a field. This allows us to compute determinants, inverses and characteristic polynomials of matrices. The work is based on the HOL-Multivariate Analysis library, and on both the Gauss-Jordan and Cayley-Hamilton AFP entries. As a by-product, some algebraic structures have been implemented (principal ideal domains, Bézout domains...). The algorithm has been refined to immutable arrays and code can be generated to functional languages as well. notify = jose.divasonm@unirioja.es, jesus-maria.aransay@unirioja.es [QR_Decomposition] title = QR Decomposition author = Jose Divasón , Jesús Aransay topic = Computer science/Algorithms/Mathematical, Mathematics/Algebra date = 2015-02-12 abstract = QR decomposition is an algorithm to decompose a real matrix A into the product of two other matrices Q and R, where Q is orthogonal and R is invertible and upper triangular. The algorithm is useful for the least squares problem; i.e., the computation of the best approximation of an unsolvable system of linear equations. As a side-product, the Gram-Schmidt process has also been formalized. A refinement using immutable arrays is presented as well. The development relies, among others, on the AFP entry "Implementing field extensions of the form Q[sqrt(b)]" by René Thiemann, which allows execution of the algorithm using symbolic computations. Verified code can be generated and executed using floats as well. extra-history = Change history: [2015-06-18]: The second part of the Fundamental Theorem of Linear Algebra has been generalized to more general inner product spaces. notify = jose.divasonm@unirioja.es, jesus-maria.aransay@unirioja.es [Hermite] title = Hermite Normal Form author = Jose Divasón , Jesús Aransay topic = Computer science/Algorithms/Mathematical, Mathematics/Algebra date = 2015-07-07 abstract = Hermite Normal Form is a canonical matrix analogue of Reduced Echelon Form, but involving matrices over more general rings. In this work we formalise an algorithm to compute the Hermite Normal Form of a matrix by means of elementary row operations, taking advantage of the Echelon Form AFP entry. We have proven the correctness of such an algorithm and refined it to immutable arrays. Furthermore, we have also formalised the uniqueness of the Hermite Normal Form of a matrix. Code can be exported and some examples of execution involving integer matrices and polynomial matrices are presented as well. notify = jose.divasonm@unirioja.es, jesus-maria.aransay@unirioja.es [Imperative_Insertion_Sort] title = Imperative Insertion Sort author = Christian Sternagel date = 2014-09-25 topic = Computer science/Algorithms abstract = The insertion sort algorithm of Cormen et al. (Introduction to Algorithms) is expressed in Imperative HOL and proved to be correct and terminating. For this purpose we also provide a theory about imperative loop constructs with accompanying induction/invariant rules for proving partial and total correctness. Furthermore, the formalized algorithm is fit for code generation. notify = lp15@cam.ac.uk [Stream_Fusion_Code] title = Stream Fusion in HOL with Code Generation author = Andreas Lochbihler , Alexandra Maximova date = 2014-10-10 topic = Computer science/Functional programming abstract = Stream Fusion is a system for removing intermediate list data structures from functional programs, in particular Haskell. This entry adapts stream fusion to Isabelle/HOL and its code generator. We define stream types for finite and possibly infinite lists and stream versions for most of the fusible list functions in the theories List and Coinductive_List, and prove them correct with respect to the conversion functions between lists and streams. The Stream Fusion transformation itself is implemented as a simproc in the preprocessor of the code generator. [Brian Huffman's AFP entry formalises stream fusion in HOLCF for the domain of lazy lists to prove the GHC compiler rewrite rules correct. In contrast, this work enables Isabelle's code generator to perform stream fusion itself. To that end, it covers both finite and coinductive lists from the HOL library and the Coinductive entry. The fusible list functions require specification and proof principles different from Huffman's.] notify = mail@andreas-lochbihler.de [Case_Labeling] title = Generating Cases from Labeled Subgoals author = Lars Noschinski date = 2015-07-21 topic = Tools, Computer science/Programming languages/Misc abstract = Isabelle/Isar provides named cases to structure proofs. This article contains an implementation of a proof method casify, which can be used to easily extend proof tools with support for named cases. Such a proof tool must produce labeled subgoals, which are then interpreted by casify.

As examples, this work contains verification condition generators producing named cases for three languages: The Hoare language from HOL/Library, a monadic language for computations with failure (inspired by the AutoCorres tool), and a language of conditional expressions. These VCGs are demonstrated by a number of example programs. notify = noschinl@gmail.com [DPT-SAT-Solver] title = A Fast SAT Solver for Isabelle in Standard ML topic = Tools author = Armin Heller <> date = 2009-12-09 abstract = This contribution contains a fast SAT solver for Isabelle written in Standard ML. By loading the theory DPT_SAT_Solver, the SAT solver installs itself (under the name ``dptsat'') and certain Isabelle tools like Refute will start using it automatically. This is a port of the DPT (Decision Procedure Toolkit) SAT Solver written in OCaml. notify = jasmin.blanchette@gmail.com [Rep_Fin_Groups] title = Representations of Finite Groups topic = Mathematics/Algebra author = Jeremy Sylvestre date = 2015-08-12 abstract = We provide a formal framework for the theory of representations of finite groups, as modules over the group ring. Along the way, we develop the general theory of groups (relying on the group_add class for the basics), modules, and vector spaces, to the extent required for theory of group representations. We then provide formal proofs of several important introductory theorems in the subject, including Maschke's theorem, Schur's lemma, and Frobenius reciprocity. We also prove that every irreducible representation is isomorphic to a submodule of the group ring, leading to the fact that for a finite group there are only finitely many isomorphism classes of irreducible representations. In all of this, no restriction is made on the characteristic of the ring or field of scalars until the definition of a group representation, and then the only restriction made is that the characteristic must not divide the order of the group. notify = jsylvest@ualberta.ca [Noninterference_Inductive_Unwinding] title = The Inductive Unwinding Theorem for CSP Noninterference Security topic = Computer science/Security author = Pasquale Noce date = 2015-08-18 abstract =

The necessary and sufficient condition for CSP noninterference security stated by the Ipurge Unwinding Theorem is expressed in terms of a pair of event lists varying over the set of process traces. This does not render it suitable for the subsequent application of rule induction in the case of a process defined inductively, since rule induction may rather be applied to a single variable ranging over an inductively defined set.

Starting from the Ipurge Unwinding Theorem, this paper derives a necessary and sufficient condition for CSP noninterference security that involves a single event list varying over the set of process traces, and is thus suitable for rule induction; hence its name, Inductive Unwinding Theorem. Similarly to the Ipurge Unwinding Theorem, the new theorem only requires to consider individual accepted and refused events for each process trace, and applies to the general case of a possibly intransitive noninterference policy. Specific variants of this theorem are additionally proven for deterministic processes and trace set processes.

notify = pasquale.noce.lavoro@gmail.com [Password_Authentication_Protocol] title = Verification of a Diffie-Hellman Password-based Authentication Protocol by Extending the Inductive Method author = Pasquale Noce topic = Computer science/Security date = 2017-01-03 notify = pasquale.noce.lavoro@gmail.com abstract = This paper constructs a formal model of a Diffie-Hellman password-based authentication protocol between a user and a smart card, and proves its security. The protocol provides for the dispatch of the user's password to the smart card on a secure messaging channel established by means of Password Authenticated Connection Establishment (PACE), where the mapping method being used is Chip Authentication Mapping. By applying and suitably extending Paulson's Inductive Method, this paper proves that the protocol establishes trustworthy secure messaging channels, preserves the secrecy of users' passwords, and provides an effective mutual authentication service. What is more, these security properties turn out to hold independently of the secrecy of the PACE authentication key. [Jordan_Normal_Form] title = Matrices, Jordan Normal Forms, and Spectral Radius Theory topic = Mathematics/Algebra author = René Thiemann , Akihisa Yamada contributors = Alexander Bentkamp date = 2015-08-21 abstract =

Matrix interpretations are useful as measure functions in termination proving. In order to use these interpretations also for complexity analysis, the growth rate of matrix powers has to examined. Here, we formalized a central result of spectral radius theory, namely that the growth rate is polynomially bounded if and only if the spectral radius of a matrix is at most one.

To formally prove this result we first studied the growth rates of matrices in Jordan normal form, and prove the result that every complex matrix has a Jordan normal form using a constructive prove via Schur decomposition.

The whole development is based on a new abstract type for matrices, which is also executable by a suitable setup of the code generator. It completely subsumes our former AFP-entry on executable matrices, and its main advantage is its close connection to the HMA-representation which allowed us to easily adapt existing proofs on determinants.

All the results have been applied to improve CeTA, our certifier to validate termination and complexity proof certificates.

extra-history = Change history: [2016-01-07]: Added Schur-decomposition, Gram-Schmidt orthogonalization, uniqueness of Jordan normal forms
[2018-04-17]: Integrated lemmas from deep-learning AFP-entry of Alexander Bentkamp notify = rene.thiemann@uibk.ac.at, ayamada@trs.cm.is.nagoya-u.ac.jp [LTL_to_DRA] title = Converting Linear Temporal Logic to Deterministic (Generalized) Rabin Automata topic = Computer science/Automata and formal languages author = Salomon Sickert date = 2015-09-04 abstract = Recently, Javier Esparza and Jan Kretinsky proposed a new method directly translating linear temporal logic (LTL) formulas to deterministic (generalized) Rabin automata. Compared to the existing approaches of constructing a non-deterministic Buechi-automaton in the first step and then applying a determinization procedure (e.g. some variant of Safra's construction) in a second step, this new approach preservers a relation between the formula and the states of the resulting automaton. While the old approach produced a monolithic structure, the new method is compositional. Furthermore, in some cases the resulting automata are much smaller than the automata generated by existing approaches. In order to ensure the correctness of the construction, this entry contains a complete formalisation and verification of the translation. Furthermore from this basis executable code is generated. extra-history = Change history: [2015-09-23]: Enable code export for the eager unfolding optimisation and reduce running time of the generated tool. Moreover, add support for the mlton SML compiler.
[2016-03-24]: Make use of the LTL entry and include the simplifier. notify = sickert@in.tum.de [Timed_Automata] title = Timed Automata author = Simon Wimmer date = 2016-03-08 topic = Computer science/Automata and formal languages abstract = Timed automata are a widely used formalism for modeling real-time systems, which is employed in a class of successful model checkers such as UPPAAL [LPY97], HyTech [HHWt97] or Kronos [Yov97]. This work formalizes the theory for the subclass of diagonal-free timed automata, which is sufficient to model many interesting problems. We first define the basic concepts and semantics of diagonal-free timed automata. Based on this, we prove two types of decidability results for the language emptiness problem. The first is the classic result of Alur and Dill [AD90, AD94], which uses a finite partitioning of the state space into so-called `regions`. Our second result focuses on an approach based on `Difference Bound Matrices (DBMs)`, which is practically used by model checkers. We prove the correctness of the basic forward analysis operations on DBMs. One of these operations is the Floyd-Warshall algorithm for the all-pairs shortest paths problem. To obtain a finite search space, a widening operation has to be used for this kind of analysis. We use Patricia Bouyer's [Bou04] approach to prove that this widening operation is correct in the sense that DBM-based forward analysis in combination with the widening operation also decides language emptiness. The interesting property of this proof is that the first decidability result is reused to obtain the second one. notify = wimmers@in.tum.de [Parity_Game] title = Positional Determinacy of Parity Games author = Christoph Dittmann date = 2015-11-02 topic = Mathematics/Games and economics, Mathematics/Graph theory abstract = We present a formalization of parity games (a two-player game on directed graphs) and a proof of their positional determinacy in Isabelle/HOL. This proof works for both finite and infinite games. notify = [Ergodic_Theory] title = Ergodic Theory author = Sebastien Gouezel date = 2015-12-01 topic = Mathematics/Probability theory abstract = Ergodic theory is the branch of mathematics that studies the behaviour of measure preserving transformations, in finite or infinite measure. It interacts both with probability theory (mainly through measure theory) and with geometry as a lot of interesting examples are from geometric origin. We implement the first definitions and theorems of ergodic theory, including notably Poicaré recurrence theorem for finite measure preserving systems (together with the notion of conservativity in general), induced maps, Kac's theorem, Birkhoff theorem (arguably the most important theorem in ergodic theory), and variations around it such as conservativity of the corresponding skew product, or Atkinson lemma. notify = sebastien.gouezel@univ-rennes1.fr, hoelzl@in.tum.de [Latin_Square] title = Latin Square author = Alexander Bentkamp date = 2015-12-02 topic = Mathematics/Combinatorics abstract = A Latin Square is a n x n table filled with integers from 1 to n where each number appears exactly once in each row and each column. A Latin Rectangle is a partially filled n x n table with r filled rows and n-r empty rows, such that each number appears at most once in each row and each column. The main result of this theory is that any Latin Rectangle can be completed to a Latin Square. notify = bentkamp@gmail.com [Deep_Learning] title = Expressiveness of Deep Learning author = Alexander Bentkamp date = 2016-11-10 topic = Computer science/Machine learning, Mathematics/Analysis abstract = Deep learning has had a profound impact on computer science in recent years, with applications to search engines, image recognition and language processing, bioinformatics, and more. Recently, Cohen et al. provided theoretical evidence for the superiority of deep learning over shallow learning. This formalization of their work simplifies and generalizes the original proof, while working around the limitations of the Isabelle type system. To support the formalization, I developed reusable libraries of formalized mathematics, including results about the matrix rank, the Lebesgue measure, and multivariate polynomials, as well as a library for tensor analysis. notify = bentkamp@gmail.com [Inductive_Inference] title = Some classical results in inductive inference of recursive functions author = Frank J. Balbach topic = Logic/Computability, Computer science/Machine learning date = 2020-08-31 notify = frank-balbach@gmx.de abstract =

This entry formalizes some classical concepts and results from inductive inference of recursive functions. In the basic setting a partial recursive function ("strategy") must identify ("learn") all functions from a set ("class") of recursive functions. To that end the strategy receives more and more values $f(0), f(1), f(2), \ldots$ of some function $f$ from the given class and in turn outputs descriptions of partial recursive functions, for example, Gödel numbers. The strategy is considered successful if the sequence of outputs ("hypotheses") converges to a description of $f$. A class of functions learnable in this sense is called "learnable in the limit". The set of all these classes is denoted by LIM.

Other types of inference considered are finite learning (FIN), behaviorally correct learning in the limit (BC), and some variants of LIM with restrictions on the hypotheses: total learning (TOTAL), consistent learning (CONS), and class-preserving learning (CP). The main results formalized are the proper inclusions $\mathrm{FIN} \subset \mathrm{CP} \subset \mathrm{TOTAL} \subset \mathrm{CONS} \subset \mathrm{LIM} \subset \mathrm{BC} \subset 2^{\mathcal{R}}$, where $\mathcal{R}$ is the set of all total recursive functions. Further results show that for all these inference types except CONS, strategies can be assumed to be total recursive functions; that all inference types but CP are closed under the subset relation between classes; and that no inference type is closed under the union of classes.

The above is based on a formalization of recursive functions heavily inspired by the Universal Turing Machine entry by Xu et al., but different in that it models partial functions with codomain nat option. The formalization contains a construction of a universal partial recursive function, without resorting to Turing machines, introduces decidability and recursive enumerability, and proves some standard results: existence of a Kleene normal form, the s-m-n theorem, Rice's theorem, and assorted fixed-point theorems (recursion theorems) by Kleene, Rogers, and Smullyan.

[Applicative_Lifting] title = Applicative Lifting author = Andreas Lochbihler , Joshua Schneider <> date = 2015-12-22 topic = Computer science/Functional programming abstract = Applicative functors augment computations with effects by lifting function application to types which model the effects. As the structure of the computation cannot depend on the effects, applicative expressions can be analysed statically. This allows us to lift universally quantified equations to the effectful types, as observed by Hinze. Thus, equational reasoning over effectful computations can be reduced to pure types.

This entry provides a package for registering applicative functors and two proof methods for lifting of equations over applicative functors. The first method normalises applicative expressions according to the laws of applicative functors. This way, equations whose two sides contain the same list of variables can be lifted to every applicative functor.

To lift larger classes of equations, the second method exploits a number of additional properties (e.g., commutativity of effects) provided the properties have been declared for the concrete applicative functor at hand upon registration.

We declare several types from the Isabelle library as applicative functors and illustrate the use of the methods with two examples: the lifting of the arithmetic type class hierarchy to streams and the verification of a relabelling function on binary trees. We also formalise and verify the normalisation algorithm used by the first proof method.

extra-history = Change history: [2016-03-03]: added formalisation of lifting with combinators
[2016-06-10]: implemented automatic derivation of lifted combinator reductions; support arbitrary lifted relations using relators; improved compatibility with locale interpretation (revision ec336f354f37)
notify = mail@andreas-lochbihler.de [Stern_Brocot] title = The Stern-Brocot Tree author = Peter Gammie , Andreas Lochbihler date = 2015-12-22 topic = Mathematics/Number theory abstract = The Stern-Brocot tree contains all rational numbers exactly once and in their lowest terms. We formalise the Stern-Brocot tree as a coinductive tree using recursive and iterative specifications, which we have proven equivalent, and show that it indeed contains all the numbers as stated. Following Hinze, we prove that the Stern-Brocot tree can be linearised looplessly into Stern's diatonic sequence (also known as Dijkstra's fusc function) and that it is a permutation of the Bird tree.

The reasoning stays at an abstract level by appealing to the uniqueness of solutions of guarded recursive equations and lifting algebraic laws point-wise to trees and streams using applicative functors.

notify = mail@andreas-lochbihler.de [Algebraic_Numbers] title = Algebraic Numbers in Isabelle/HOL topic = Mathematics/Algebra author = René Thiemann , Akihisa Yamada , Sebastiaan Joosten contributors = Manuel Eberl date = 2015-12-22 abstract = Based on existing libraries for matrices, factorization of rational polynomials, and Sturm's theorem, we formalized algebraic numbers in Isabelle/HOL. Our development serves as an implementation for real and complex numbers, and it admits to compute roots and completely factorize real and complex polynomials, provided that all coefficients are rational numbers. Moreover, we provide two implementations to display algebraic numbers, an injective and expensive one, or a faster but approximative version.

To this end, we mechanized several results on resultants, which also required us to prove that polynomials over a unique factorization domain form again a unique factorization domain.

extra-history = Change history: [2016-01-29]: Split off Polynomial Interpolation and Polynomial Factorization
[2017-04-16]: Use certified Berlekamp-Zassenhaus factorization, use subresultant algorithm for computing resultants, improved bisection algorithm notify = rene.thiemann@uibk.ac.at, ayamada@trs.cm.is.nagoya-u.ac.jp, sebastiaan.joosten@uibk.ac.at [Polynomial_Interpolation] title = Polynomial Interpolation topic = Mathematics/Algebra author = René Thiemann , Akihisa Yamada date = 2016-01-29 abstract = We formalized three algorithms for polynomial interpolation over arbitrary fields: Lagrange's explicit expression, the recursive algorithm of Neville and Aitken, and the Newton interpolation in combination with an efficient implementation of divided differences. Variants of these algorithms for integer polynomials are also available, where sometimes the interpolation can fail; e.g., there is no linear integer polynomial p such that p(0) = 0 and p(2) = 1. Moreover, for the Newton interpolation for integer polynomials, we proved that all intermediate results that are computed during the algorithm must be integers. This admits an early failure detection in the implementation. Finally, we proved the uniqueness of polynomial interpolation.

The development also contains improved code equations to speed up the division of integers in target languages. notify = rene.thiemann@uibk.ac.at, ayamada@trs.cm.is.nagoya-u.ac.jp [Polynomial_Factorization] title = Polynomial Factorization topic = Mathematics/Algebra author = René Thiemann , Akihisa Yamada date = 2016-01-29 abstract = Based on existing libraries for polynomial interpolation and matrices, we formalized several factorization algorithms for polynomials, including Kronecker's algorithm for integer polynomials, Yun's square-free factorization algorithm for field polynomials, and Berlekamp's algorithm for polynomials over finite fields. By combining the last one with Hensel's lifting, we derive an efficient factorization algorithm for the integer polynomials, which is then lifted for rational polynomials by mechanizing Gauss' lemma. Finally, we assembled a combined factorization algorithm for rational polynomials, which combines all the mentioned algorithms and additionally uses the explicit formula for roots of quadratic polynomials and a rational root test.

As side products, we developed division algorithms for polynomials over integral domains, as well as primality-testing and prime-factorization algorithms for integers. notify = rene.thiemann@uibk.ac.at, ayamada@trs.cm.is.nagoya-u.ac.jp [Perron_Frobenius] title = Perron-Frobenius Theorem for Spectral Radius Analysis author = Jose Divasón , Ondřej Kunčar , René Thiemann , Akihisa Yamada notify = rene.thiemann@uibk.ac.at date = 2016-05-20 topic = Mathematics/Algebra abstract =

The spectral radius of a matrix A is the maximum norm of all eigenvalues of A. In previous work we already formalized that for a complex matrix A, the values in An grow polynomially in n if and only if the spectral radius is at most one. One problem with the above characterization is the determination of all complex eigenvalues. In case A contains only non-negative real values, a simplification is possible with the help of the Perron–Frobenius theorem, which tells us that it suffices to consider only the real eigenvalues of A, i.e., applying Sturm's method can decide the polynomial growth of An.

We formalize the Perron–Frobenius theorem based on a proof via Brouwer's fixpoint theorem, which is available in the HOL multivariate analysis (HMA) library. Since the results on the spectral radius is based on matrices in the Jordan normal form (JNF) library, we further develop a connection which allows us to easily transfer theorems between HMA and JNF. With this connection we derive the combined result: if A is a non-negative real matrix, and no real eigenvalue of A is strictly larger than one, then An is polynomially bounded in n.

extra-history = Change history: [2017-10-18]: added Perron-Frobenius theorem for irreducible matrices with generalization (revision bda1f1ce8a1c)
[2018-05-17]: prove conjecture of CPP'18 paper: Jordan blocks of spectral radius have maximum size (revision ffdb3794e5d5) [Stochastic_Matrices] title = Stochastic Matrices and the Perron-Frobenius Theorem author = René Thiemann topic = Mathematics/Algebra, Computer science/Automata and formal languages date = 2017-11-22 notify = rene.thiemann@uibk.ac.at abstract = Stochastic matrices are a convenient way to model discrete-time and finite state Markov chains. The Perron–Frobenius theorem tells us something about the existence and uniqueness of non-negative eigenvectors of a stochastic matrix. In this entry, we formalize stochastic matrices, link the formalization to the existing AFP-entry on Markov chains, and apply the Perron–Frobenius theorem to prove that stationary distributions always exist, and they are unique if the stochastic matrix is irreducible. [Formal_SSA] title = Verified Construction of Static Single Assignment Form author = Sebastian Ullrich , Denis Lohner date = 2016-02-05 topic = Computer science/Algorithms, Computer science/Programming languages/Transformations abstract =

We define a functional variant of the static single assignment (SSA) form construction algorithm described by Braun et al., which combines simplicity and efficiency. The definition is based on a general, abstract control flow graph representation using Isabelle locales.

We prove that the algorithm's output is semantically equivalent to the input according to a small-step semantics, and that it is in minimal SSA form for the common special case of reducible inputs. We then show the satisfiability of the locale assumptions by giving instantiations for a simple While language.

Furthermore, we use a generic instantiation based on typedefs in order to extract OCaml code and replace the unverified SSA construction algorithm of the CompCertSSA project with it.

A more detailed description of the verified SSA construction can be found in the paper Verified Construction of Static Single Assignment Form, CC 2016.

notify = denis.lohner@kit.edu [Minimal_SSA] title = Minimal Static Single Assignment Form author = Max Wagner , Denis Lohner topic = Computer science/Programming languages/Transformations date = 2017-01-17 notify = denis.lohner@kit.edu abstract =

This formalization is an extension to "Verified Construction of Static Single Assignment Form". In their work, the authors have shown that Braun et al.'s static single assignment (SSA) construction algorithm produces minimal SSA form for input programs with a reducible control flow graph (CFG). However Braun et al. also proposed an extension to their algorithm that they claim produces minimal SSA form even for irreducible CFGs.
In this formalization we support that claim by giving a mechanized proof.

As the extension of Braun et al.'s algorithm aims for removing so-called redundant strongly connected components of phi functions, we show that this suffices to guarantee minimality according to Cytron et al..

[PropResPI] title = Propositional Resolution and Prime Implicates Generation author = Nicolas Peltier notify = Nicolas.Peltier@imag.fr date = 2016-03-11 topic = Logic/General logic/Mechanization of proofs abstract = We provide formal proofs in Isabelle-HOL (using mostly structured Isar proofs) of the soundness and completeness of the Resolution rule in propositional logic. The completeness proofs take into account the usual redundancy elimination rules (tautology elimination and subsumption), and several refinements of the Resolution rule are considered: ordered resolution (with selection functions), positive and negative resolution, semantic resolution and unit resolution (the latter refinement is complete only for clause sets that are Horn- renamable). We also define a concrete procedure for computing saturated sets and establish its soundness and completeness. The clause sets are not assumed to be finite, so that the results can be applied to formulas obtained by grounding sets of first-order clauses (however, a total ordering among atoms is assumed to be given). Next, we show that the unrestricted Resolution rule is deductive- complete, in the sense that it is able to generate all (prime) implicates of any set of propositional clauses (i.e., all entailment- minimal, non-valid, clausal consequences of the considered set). The generation of prime implicates is an important problem, with many applications in artificial intelligence and verification (for abductive reasoning, knowledge compilation, diagnosis, debugging etc.). We also show that implicates can be computed in an incremental way, by fixing an ordering among all the atoms in the considered sets and resolving upon these atoms one by one in the considered order (with no backtracking). This feature is critical for the efficient computation of prime implicates. Building on these results, we provide a procedure for computing such implicates and establish its soundness and completeness. [SuperCalc] title = A Variant of the Superposition Calculus author = Nicolas Peltier notify = Nicolas.Peltier@imag.fr date = 2016-09-06 topic = Logic/Proof theory abstract = We provide a formalization of a variant of the superposition calculus, together with formal proofs of soundness and refutational completeness (w.r.t. the usual redundancy criteria based on clause ordering). This version of the calculus uses all the standard restrictions of the superposition rules, together with the following refinement, inspired by the basic superposition calculus: each clause is associated with a set of terms which are assumed to be in normal form -- thus any application of the replacement rule on these terms is blocked. The set is initially empty and terms may be added or removed at each inference step. The set of terms that are assumed to be in normal form includes any term introduced by previous unifiers as well as any term occurring in the parent clauses at a position that is smaller (according to some given ordering on positions) than a previously replaced term. The standard superposition calculus corresponds to the case where the set of irreducible terms is always empty. [Nominal2] title = Nominal 2 author = Christian Urban , Stefan Berghofer , Cezary Kaliszyk date = 2013-02-21 topic = Tools abstract =

Dealing with binders, renaming of bound variables, capture-avoiding substitution, etc., is very often a major problem in formal proofs, especially in proofs by structural and rule induction. Nominal Isabelle is designed to make such proofs easy to formalise: it provides an infrastructure for declaring nominal datatypes (that is alpha-equivalence classes) and for defining functions over them by structural recursion. It also provides induction principles that have Barendregt’s variable convention already built in.

This entry can be used as a more advanced replacement for HOL/Nominal in the Isabelle distribution.

notify = christian.urban@kcl.ac.uk [First_Welfare_Theorem] title = Microeconomics and the First Welfare Theorem author = Julian Parsert , Cezary Kaliszyk topic = Mathematics/Games and economics license = LGPL date = 2017-09-01 notify = julian.parsert@uibk.ac.at, cezary.kaliszyk@uibk.ac.at abstract = Economic activity has always been a fundamental part of society. Due to modern day politics, economic theory has gained even more influence on our lives. Thus we want models and theories to be as precise as possible. This can be achieved using certification with the help of formal proof technology. Hence we will use Isabelle/HOL to construct two economic models, that of the the pure exchange economy and a version of the Arrow-Debreu Model. We will prove that the First Theorem of Welfare Economics holds within both. The theorem is the mathematical formulation of Adam Smith's famous invisible hand and states that a group of self-interested and rational actors will eventually achieve an efficient allocation of goods and services. extra-history = Change history: [2018-06-17]: Added some lemmas and a theory file, also introduced Microeconomics folder.
[Noninterference_Sequential_Composition] title = Conservation of CSP Noninterference Security under Sequential Composition author = Pasquale Noce date = 2016-04-26 topic = Computer science/Security, Computer science/Concurrency/Process calculi abstract =

In his outstanding work on Communicating Sequential Processes, Hoare has defined two fundamental binary operations allowing to compose the input processes into another, typically more complex, process: sequential composition and concurrent composition. Particularly, the output of the former operation is a process that initially behaves like the first operand, and then like the second operand once the execution of the first one has terminated successfully, as long as it does.

This paper formalizes Hoare's definition of sequential composition and proves, in the general case of a possibly intransitive policy, that CSP noninterference security is conserved under this operation, provided that successful termination cannot be affected by confidential events and cannot occur as an alternative to other events in the traces of the first operand. Both of these assumptions are shown, by means of counterexamples, to be necessary for the theorem to hold.

notify = pasquale.noce.lavoro@gmail.com [Noninterference_Concurrent_Composition] title = Conservation of CSP Noninterference Security under Concurrent Composition author = Pasquale Noce notify = pasquale.noce.lavoro@gmail.com date = 2016-06-13 topic = Computer science/Security, Computer science/Concurrency/Process calculi abstract =

In his outstanding work on Communicating Sequential Processes, Hoare has defined two fundamental binary operations allowing to compose the input processes into another, typically more complex, process: sequential composition and concurrent composition. Particularly, the output of the latter operation is a process in which any event not shared by both operands can occur whenever the operand that admits the event can engage in it, whereas any event shared by both operands can occur just in case both can engage in it.

This paper formalizes Hoare's definition of concurrent composition and proves, in the general case of a possibly intransitive policy, that CSP noninterference security is conserved under this operation. This result, along with the previous analogous one concerning sequential composition, enables the construction of more and more complex processes enforcing noninterference security by composing, sequentially or concurrently, simpler secure processes, whose security can in turn be proven using either the definition of security, or unwinding theorems.

[ROBDD] title = Algorithms for Reduced Ordered Binary Decision Diagrams author = Julius Michaelis , Maximilian Haslbeck , Peter Lammich , Lars Hupel date = 2016-04-27 topic = Computer science/Algorithms, Computer science/Data structures abstract = We present a verified and executable implementation of ROBDDs in Isabelle/HOL. Our implementation relates pointer-based computation in the Heap monad to operations on an abstract definition of boolean functions. Internally, we implemented the if-then-else combinator in a recursive fashion, following the Shannon decomposition of the argument functions. The implementation mixes and adapts known techniques and is built with efficiency in mind. notify = bdd@liftm.de, haslbecm@in.tum.de [No_FTL_observers] title = No Faster-Than-Light Observers author = Mike Stannett , István Németi date = 2016-04-28 topic = Mathematics/Physics abstract = We provide a formal proof within First Order Relativity Theory that no observer can travel faster than the speed of light. Originally reported in Stannett & Németi (2014) "Using Isabelle/HOL to verify first-order relativity theory", Journal of Automated Reasoning 52(4), pp. 361-378. notify = m.stannett@sheffield.ac.uk [Groebner_Bases] title = Gröbner Bases Theory author = Fabian Immler , Alexander Maletzky date = 2016-05-02 topic = Mathematics/Algebra, Computer science/Algorithms/Mathematical abstract = This formalization is concerned with the theory of Gröbner bases in (commutative) multivariate polynomial rings over fields, originally developed by Buchberger in his 1965 PhD thesis. Apart from the statement and proof of the main theorem of the theory, the formalization also implements Buchberger's algorithm for actually computing Gröbner bases as a tail-recursive function, thus allowing to effectively decide ideal membership in finitely generated polynomial ideals. Furthermore, all functions can be executed on a concrete representation of multivariate polynomials as association lists. extra-history = Change history: [2019-04-18]: Specialized Gröbner bases to less abstract representation of polynomials, where power-products are represented as polynomial mappings.
notify = alexander.maletzky@risc.jku.at [Nullstellensatz] title = Hilbert's Nullstellensatz author = Alexander Maletzky topic = Mathematics/Algebra, Mathematics/Geometry date = 2019-06-16 notify = alexander.maletzky@risc-software.at abstract = This entry formalizes Hilbert's Nullstellensatz, an important theorem in algebraic geometry that can be viewed as the generalization of the Fundamental Theorem of Algebra to multivariate polynomials: If a set of (multivariate) polynomials over an algebraically closed field has no common zero, then the ideal it generates is the entire polynomial ring. The formalization proves several equivalent versions of this celebrated theorem: the weak Nullstellensatz, the strong Nullstellensatz (connecting algebraic varieties and radical ideals), and the field-theoretic Nullstellensatz. The formalization follows Chapter 4.1. of Ideals, Varieties, and Algorithms by Cox, Little and O'Shea. [Bell_Numbers_Spivey] title = Spivey's Generalized Recurrence for Bell Numbers author = Lukas Bulwahn date = 2016-05-04 topic = Mathematics/Combinatorics abstract = This entry defines the Bell numbers as the cardinality of set partitions for a carrier set of given size, and derives Spivey's generalized recurrence relation for Bell numbers following his elegant and intuitive combinatorial proof.

As the set construction for the combinatorial proof requires construction of three intermediate structures, the main difficulty of the formalization is handling the overall combinatorial argument in a structured way. The introduced proof structure allows us to compose the combinatorial argument from its subparts, and supports to keep track how the detailed proof steps are related to the overall argument. To obtain this structure, this entry uses set monad notation for the set construction's definition, introduces suitable predicates and rules, and follows a repeating structure in its Isar proof. notify = lukas.bulwahn@gmail.com [Randomised_Social_Choice] title = Randomised Social Choice Theory author = Manuel Eberl date = 2016-05-05 topic = Mathematics/Games and economics abstract = This work contains a formalisation of basic Randomised Social Choice, including Stochastic Dominance and Social Decision Schemes (SDSs) along with some of their most important properties (Anonymity, Neutrality, ex-post- and SD-Efficiency, SD-Strategy-Proofness) and two particular SDSs – Random Dictatorship and Random Serial Dictatorship (with proofs of the properties that they satisfy). Many important properties of these concepts are also proven – such as the two equivalent characterisations of Stochastic Dominance and the fact that SD-efficiency of a lottery only depends on the support. The entry also provides convenient commands to define Preference Profiles, prove their well-formedness, and automatically derive restrictions that sufficiently nice SDSs need to satisfy on the defined profiles. Currently, the formalisation focuses on weak preferences and Stochastic Dominance, but it should be easy to extend it to other domains – such as strict preferences – or other lottery extensions – such as Bilinear Dominance or Pairwise Comparison. notify = eberlm@in.tum.de [SDS_Impossibility] title = The Incompatibility of SD-Efficiency and SD-Strategy-Proofness author = Manuel Eberl date = 2016-05-04 topic = Mathematics/Games and economics abstract = This formalisation contains the proof that there is no anonymous and neutral Social Decision Scheme for at least four voters and alternatives that fulfils both SD-Efficiency and SD-Strategy- Proofness. The proof is a fully structured and quasi-human-redable one. It was derived from the (unstructured) SMT proof of the case for exactly four voters and alternatives by Brandl et al. Their proof relies on an unverified translation of the original problem to SMT, and the proof that lifts the argument for exactly four voters and alternatives to the general case is also not machine-checked. In this Isabelle proof, on the other hand, all of these steps are fully proven and machine-checked. This is particularly important seeing as a previously published informal proof of a weaker statement contained a mistake in precisely this lifting step. notify = eberlm@in.tum.de [Median_Of_Medians_Selection] title = The Median-of-Medians Selection Algorithm author = Manuel Eberl topic = Computer science/Algorithms date = 2017-12-21 notify = eberlm@in.tum.de abstract =

This entry provides an executable functional implementation of the Median-of-Medians algorithm for selecting the k-th smallest element of an unsorted list deterministically in linear time. The size bounds for the recursive call that lead to the linear upper bound on the run-time of the algorithm are also proven.

[Mason_Stothers] title = The Mason–Stothers Theorem author = Manuel Eberl topic = Mathematics/Algebra date = 2017-12-21 notify = eberlm@in.tum.de abstract =

This article provides a formalisation of Snyder’s simple and elegant proof of the Mason–Stothers theorem, which is the polynomial analogue of the famous abc Conjecture for integers. Remarkably, Snyder found this very elegant proof when he was still a high-school student.

In short, the statement of the theorem is that three non-zero coprime polynomials A, B, C over a field which sum to 0 and do not all have vanishing derivatives fulfil max{deg(A), deg(B), deg(C)} < deg(rad(ABC)) where the rad(P) denotes the radical of P, i. e. the product of all unique irreducible factors of P.

This theorem also implies a kind of polynomial analogue of Fermat’s Last Theorem for polynomials: except for trivial cases, An + Bn + Cn = 0 implies n ≤ 2 for coprime polynomials A, B, C over a field.

[FLP] title = A Constructive Proof for FLP author = Benjamin Bisping , Paul-David Brodmann , Tim Jungnickel , Christina Rickmann , Henning Seidler , Anke Stüber , Arno Wilhelm-Weidner , Kirstin Peters , Uwe Nestmann date = 2016-05-18 topic = Computer science/Concurrency abstract = The impossibility of distributed consensus with one faulty process is a result with important consequences for real world distributed systems e.g., commits in replicated databases. Since proofs are not immune to faults and even plausible proofs with a profound formalism can conclude wrong results, we validate the fundamental result named FLP after Fischer, Lynch and Paterson. We present a formalization of distributed systems and the aforementioned consensus problem. Our proof is based on Hagen Völzer's paper "A constructive proof for FLP". In addition to the enhanced confidence in the validity of Völzer's proof, we contribute the missing gaps to show the correctness in Isabelle/HOL. We clarify the proof details and even prove fairness of the infinite execution that contradicts consensus. Our Isabelle formalization can also be reused for further proofs of properties of distributed systems. notify = henning.seidler@mailbox.tu-berlin.de [IMAP-CRDT] title = The IMAP CmRDT author = Tim Jungnickel , Lennart Oldenburg <>, Matthias Loibl <> topic = Computer science/Algorithms/Distributed, Computer science/Data structures date = 2017-11-09 notify = tim.jungnickel@tu-berlin.de abstract = We provide our Isabelle/HOL formalization of a Conflict-free Replicated Datatype for Internet Message Access Protocol commands. We show that Strong Eventual Consistency (SEC) is guaranteed by proving the commutativity of concurrent operations. We base our formalization on the recently proposed "framework for establishing Strong Eventual Consistency for Conflict-free Replicated Datatypes" (AFP.CRDT) from Gomes et al. Hence, we provide an additional example of how the recently proposed framework can be used to design and prove CRDTs. [Incredible_Proof_Machine] title = The meta theory of the Incredible Proof Machine author = Joachim Breitner , Denis Lohner date = 2016-05-20 topic = Logic/Proof theory abstract = The Incredible Proof Machine is an interactive visual theorem prover which represents proofs as port graphs. We model this proof representation in Isabelle, and prove that it is just as powerful as natural deduction. notify = mail@joachim-breitner.de [Word_Lib] title = Finite Machine Word Library author = Joel Beeren<>, Matthew Fernandez<>, Xin Gao<>, Gerwin Klein , Rafal Kolanski<>, Japheth Lim<>, Corey Lewis<>, Daniel Matichuk<>, Thomas Sewell<> notify = kleing@unsw.edu.au date = 2016-06-09 topic = Computer science/Data structures abstract = This entry contains an extension to the Isabelle library for fixed-width machine words. In particular, the entry adds quickcheck setup for words, printing as hexadecimals, additional operations, reasoning about alignment, signed words, enumerations of words, normalisation of word numerals, and an extensive library of properties about generic fixed-width words, as well as an instantiation of many of these to the commonly used 32 and 64-bit bases. [Catalan_Numbers] title = Catalan Numbers author = Manuel Eberl notify = eberlm@in.tum.de date = 2016-06-21 topic = Mathematics/Combinatorics abstract =

In this work, we define the Catalan numbers Cn and prove several equivalent definitions (including some closed-form formulae). We also show one of their applications (counting the number of binary trees of size n), prove the asymptotic growth approximation Cn ∼ 4n / (√π · n1.5), and provide reasonably efficient executable code to compute them.

The derivation of the closed-form formulae uses algebraic manipulations of the ordinary generating function of the Catalan numbers, and the asymptotic approximation is then done using generalised binomial coefficients and the Gamma function. Thanks to these highly non-elementary mathematical tools, the proofs are very short and simple.

[Fisher_Yates] title = Fisher–Yates shuffle author = Manuel Eberl notify = eberlm@in.tum.de date = 2016-09-30 topic = Computer science/Algorithms abstract =

This work defines and proves the correctness of the Fisher–Yates algorithm for shuffling – i.e. producing a random permutation – of a list. The algorithm proceeds by traversing the list and in each step swapping the current element with a random element from the remaining list.

[Bertrands_Postulate] title = Bertrand's postulate author = Julian Biendarra<>, Manuel Eberl contributors = Lawrence C. Paulson topic = Mathematics/Number theory date = 2017-01-17 notify = eberlm@in.tum.de abstract =

Bertrand's postulate is an early result on the distribution of prime numbers: For every positive integer n, there exists a prime number that lies strictly between n and 2n. The proof is ported from John Harrison's formalisation in HOL Light. It proceeds by first showing that the property is true for all n greater than or equal to 600 and then showing that it also holds for all n below 600 by case distinction.

[Rewriting_Z] title = The Z Property author = Bertram Felgenhauer<>, Julian Nagele<>, Vincent van Oostrom<>, Christian Sternagel notify = bertram.felgenhauer@uibk.ac.at, julian.nagele@uibk.ac.at, c.sternagel@gmail.com date = 2016-06-30 topic = Logic/Rewriting abstract = We formalize the Z property introduced by Dehornoy and van Oostrom. First we show that for any abstract rewrite system, Z implies confluence. Then we give two examples of proofs using Z: confluence of lambda-calculus with respect to beta-reduction and confluence of combinatory logic. [Resolution_FOL] title = The Resolution Calculus for First-Order Logic author = Anders Schlichtkrull notify = andschl@dtu.dk date = 2016-06-30 topic = Logic/General logic/Mechanization of proofs abstract = This theory is a formalization of the resolution calculus for first-order logic. It is proven sound and complete. The soundness proof uses the substitution lemma, which shows a correspondence between substitutions and updates to an environment. The completeness proof uses semantic trees, i.e. trees whose paths are partial Herbrand interpretations. It employs Herbrand's theorem in a formulation which states that an unsatisfiable set of clauses has a finite closed semantic tree. It also uses the lifting lemma which lifts resolution derivation steps from the ground world up to the first-order world. The theory is presented in a paper in the Journal of Automated Reasoning [Sch18] which extends a paper presented at the International Conference on Interactive Theorem Proving [Sch16]. An earlier version was presented in an MSc thesis [Sch15]. The formalization mostly follows textbooks by Ben-Ari [BA12], Chang and Lee [CL73], and Leitsch [Lei97]. The theory is part of the IsaFoL project [IsaFoL].

[Sch18] Anders Schlichtkrull. "Formalization of the Resolution Calculus for First-Order Logic". Journal of Automated Reasoning, 2018.
[Sch16] Anders Schlichtkrull. "Formalization of the Resolution Calculus for First-Order Logic". In: ITP 2016. Vol. 9807. LNCS. Springer, 2016.
[Sch15] Anders Schlichtkrull. "Formalization of Resolution Calculus in Isabelle". https://people.compute.dtu.dk/andschl/Thesis.pdf. MSc thesis. Technical University of Denmark, 2015.
[BA12] Mordechai Ben-Ari. Mathematical Logic for Computer Science. 3rd. Springer, 2012.
[CL73] Chin-Liang Chang and Richard Char-Tung Lee. Symbolic Logic and Mechanical Theorem Proving. 1st. Academic Press, Inc., 1973.
[Lei97] Alexander Leitsch. The Resolution Calculus. Texts in theoretical computer science. Springer, 1997.
[IsaFoL] IsaFoL authors. IsaFoL: Isabelle Formalization of Logic. https://bitbucket.org/jasmin_blanchette/isafol. extra-history = Change history: [2018-01-24]: added several new versions of the soundness and completeness theorems as described in the paper [Sch18].
[2018-03-20]: added a concrete instance of the unification and completeness theorems using the First-Order Terms AFP-entry from IsaFoR as described in the papers [Sch16] and [Sch18]. [Surprise_Paradox] title = Surprise Paradox author = Joachim Breitner notify = mail@joachim-breitner.de date = 2016-07-17 topic = Logic/Proof theory abstract = In 1964, Fitch showed that the paradox of the surprise hanging can be resolved by showing that the judge’s verdict is inconsistent. His formalization builds on Gödel’s coding of provability. In this theory, we reproduce his proof in Isabelle, building on Paulson’s formalisation of Gödel’s incompleteness theorems. [Ptolemys_Theorem] title = Ptolemy's Theorem author = Lukas Bulwahn notify = lukas.bulwahn@gmail.com date = 2016-08-07 topic = Mathematics/Geometry abstract = This entry provides an analytic proof to Ptolemy's Theorem using polar form transformation and trigonometric identities. In this formalization, we use ideas from John Harrison's HOL Light formalization and the proof sketch on the Wikipedia entry of Ptolemy's Theorem. This theorem is the 95th theorem of the Top 100 Theorems list. [Falling_Factorial_Sum] title = The Falling Factorial of a Sum author = Lukas Bulwahn topic = Mathematics/Combinatorics date = 2017-12-22 notify = lukas.bulwahn@gmail.com abstract = This entry shows that the falling factorial of a sum can be computed with an expression using binomial coefficients and the falling factorial of its summands. The entry provides three different proofs: a combinatorial proof, an induction proof and an algebraic proof using the Vandermonde identity. The three formalizations try to follow their informal presentations from a Mathematics Stack Exchange page as close as possible. The induction and algebraic formalization end up to be very close to their informal presentation, whereas the combinatorial proof first requires the introduction of list interleavings, and significant more detail than its informal presentation. [InfPathElimination] title = Infeasible Paths Elimination by Symbolic Execution Techniques: Proof of Correctness and Preservation of Paths author = Romain Aissat<>, Frederic Voisin<>, Burkhart Wolff notify = wolff@lri.fr date = 2016-08-18 topic = Computer science/Programming languages/Static analysis abstract = TRACER is a tool for verifying safety properties of sequential C programs. TRACER attempts at building a finite symbolic execution graph which over-approximates the set of all concrete reachable states and the set of feasible paths. We present an abstract framework for TRACER and similar CEGAR-like systems. The framework provides 1) a graph- transformation based method for reducing the feasible paths in control-flow graphs, 2) a model for symbolic execution, subsumption, predicate abstraction and invariant generation. In this framework we formally prove two key properties: correct construction of the symbolic states and preservation of feasible paths. The framework focuses on core operations, leaving to concrete prototypes to “fit in” heuristics for combining them. The accompanying paper (published in ITP 2016) can be found at https://www.lri.fr/∼wolff/papers/conf/2016-itp-InfPathsNSE.pdf. [Stirling_Formula] title = Stirling's formula author = Manuel Eberl notify = eberlm@in.tum.de date = 2016-09-01 topic = Mathematics/Analysis abstract =

This work contains a proof of Stirling's formula both for the factorial $n! \sim \sqrt{2\pi n} (n/e)^n$ on natural numbers and the real Gamma function $\Gamma(x)\sim \sqrt{2\pi/x} (x/e)^x$. The proof is based on work by Graham Jameson.

This is then extended to the full asymptotic expansion $$\log\Gamma(z) = \big(z - \tfrac{1}{2}\big)\log z - z + \tfrac{1}{2}\log(2\pi) + \sum_{k=1}^{n-1} \frac{B_{k+1}}{k(k+1)} z^{-k}\\ {} - \frac{1}{n} \int_0^\infty B_n([t])(t + z)^{-n}\,\text{d}t$$ uniformly for all complex $z\neq 0$ in the cone $\text{arg}(z)\leq \alpha$ for any $\alpha\in(0,\pi)$, with which the above asymptotic relation for Γ is also extended to complex arguments.

[Lp] title = Lp spaces author = Sebastien Gouezel notify = sebastien.gouezel@univ-rennes1.fr date = 2016-10-05 topic = Mathematics/Analysis abstract = Lp is the space of functions whose p-th power is integrable. It is one of the most fundamental Banach spaces that is used in analysis and probability. We develop a framework for function spaces, and then implement the Lp spaces in this framework using the existing integration theory in Isabelle/HOL. Our development contains most fundamental properties of Lp spaces, notably the Hölder and Minkowski inequalities, completeness of Lp, duality, stability under almost sure convergence, multiplication of functions in Lp and Lq, stability under conditional expectation. [Berlekamp_Zassenhaus] title = The Factorization Algorithm of Berlekamp and Zassenhaus author = Jose Divasón , Sebastiaan Joosten , René Thiemann , Akihisa Yamada notify = rene.thiemann@uibk.ac.at date = 2016-10-14 topic = Mathematics/Algebra abstract =

We formalize the Berlekamp-Zassenhaus algorithm for factoring square-free integer polynomials in Isabelle/HOL. We further adapt an existing formalization of Yun’s square-free factorization algorithm to integer polynomials, and thus provide an efficient and certified factorization algorithm for arbitrary univariate polynomials.

The algorithm first performs a factorization in the prime field GF(p) and then performs computations in the integer ring modulo p^k, where both p and k are determined at runtime. Since a natural modeling of these structures via dependent types is not possible in Isabelle/HOL, we formalize the whole algorithm using Isabelle’s recent addition of local type definitions.

Through experiments we verify that our algorithm factors polynomials of degree 100 within seconds.

[Allen_Calculus] title = Allen's Interval Calculus author = Fadoua Ghourabi <> notify = fadouaghourabi@gmail.com date = 2016-09-29 topic = Logic/General logic/Temporal logic, Mathematics/Order abstract = Allen’s interval calculus is a qualitative temporal representation of time events. Allen introduced 13 binary relations that describe all the possible arrangements between two events, i.e. intervals with non-zero finite length. The compositions are pertinent to reasoning about knowledge of time. In particular, a consistency problem of relation constraints is commonly solved with a guideline from these compositions. We formalize the relations together with an axiomatic system. We proof the validity of the 169 compositions of these relations. We also define nests as the sets of intervals that share a meeting point. We prove that nests give the ordering properties of points without introducing a new datatype for points. [1] J.F. Allen. Maintaining Knowledge about Temporal Intervals. In Commun. ACM, volume 26, pages 832–843, 1983. [2] J. F. Allen and P. J. Hayes. A Common-sense Theory of Time. In Proceedings of the 9th International Joint Conference on Artificial Intelligence (IJCAI’85), pages 528–531, 1985. [Source_Coding_Theorem] title = Source Coding Theorem author = Quentin Hibon , Lawrence C. Paulson notify = qh225@cl.cam.ac.uk date = 2016-10-19 topic = Mathematics/Probability theory abstract = This document contains a proof of the necessary condition on the code rate of a source code, namely that this code rate is bounded by the entropy of the source. This represents one half of Shannon's source coding theorem, which is itself an equivalence. [Buffons_Needle] title = Buffon's Needle Problem author = Manuel Eberl topic = Mathematics/Probability theory, Mathematics/Geometry date = 2017-06-06 notify = eberlm@in.tum.de abstract = In the 18th century, Georges-Louis Leclerc, Comte de Buffon posed and later solved the following problem, which is often called the first problem ever solved in geometric probability: Given a floor divided into vertical strips of the same width, what is the probability that a needle thrown onto the floor randomly will cross two strips? This entry formally defines the problem in the case where the needle's position is chosen uniformly at random in a single strip around the origin (which is equivalent to larger arrangements due to symmetry). It then provides proofs of the simple solution in the case where the needle's length is no greater than the width of the strips and the more complicated solution in the opposite case. [SPARCv8] title = A formal model for the SPARCv8 ISA and a proof of non-interference for the LEON3 processor author = Zhe Hou , David Sanan , Alwen Tiu , Yang Liu notify = zhe.hou@ntu.edu.sg, sanan@ntu.edu.sg date = 2016-10-19 topic = Computer science/Security, Computer science/Hardware abstract = We formalise the SPARCv8 instruction set architecture (ISA) which is used in processors such as LEON3. Our formalisation can be specialised to any SPARCv8 CPU, here we use LEON3 as a running example. Our model covers the operational semantics for all the instructions in the integer unit of the SPARCv8 architecture and it supports Isabelle code export, which effectively turns the Isabelle model into a SPARCv8 CPU simulator. We prove the language-based non-interference property for the LEON3 processor. Our model is based on deterministic monad, which is a modified version of the non-deterministic monad from NICTA/l4v. [Separata] title = Separata: Isabelle tactics for Separation Algebra author = Zhe Hou , David Sanan , Alwen Tiu , Rajeev Gore , Ranald Clouston notify = zhe.hou@ntu.edu.sg date = 2016-11-16 topic = Computer science/Programming languages/Logics, Tools abstract = We bring the labelled sequent calculus $LS_{PASL}$ for propositional abstract separation logic to Isabelle. The tactics given here are directly applied on an extension of the Separation Algebra in the AFP. In addition to the cancellative separation algebra, we further consider some useful properties in the heap model of separation logic, such as indivisible unit, disjointness, and cross-split. The tactics are essentially a proof search procedure for the calculus $LS_{PASL}$. We wrap the tactics in an Isabelle method called separata, and give a few examples of separation logic formulae which are provable by separata. [LOFT] title = LOFT — Verified Migration of Linux Firewalls to SDN author = Julius Michaelis , Cornelius Diekmann notify = isabelleopenflow@liftm.de date = 2016-10-21 topic = Computer science/Networks abstract = We present LOFT — Linux firewall OpenFlow Translator, a system that transforms the main routing table and FORWARD chain of iptables of a Linux-based firewall into a set of static OpenFlow rules. Our implementation is verified against a model of a simplified Linux-based router and we can directly show how much of the original functionality is preserved. [Stable_Matching] title = Stable Matching author = Peter Gammie notify = peteg42@gmail.com date = 2016-10-24 topic = Mathematics/Games and economics abstract = We mechanize proofs of several results from the matching with contracts literature, which generalize those of the classical two-sided matching scenarios that go by the name of stable marriage. Our focus is on game theoretic issues. Along the way we develop executable algorithms for computing optimal stable matches. [Modal_Logics_for_NTS] title = Modal Logics for Nominal Transition Systems author = Tjark Weber , Lars-Henrik Eriksson , Joachim Parrow , Johannes Borgström , Ramunas Gutkovas notify = tjark.weber@it.uu.se date = 2016-10-25 topic = Computer science/Concurrency/Process calculi, Logic/General logic/Modal logic abstract = We formalize a uniform semantic substrate for a wide variety of process calculi where states and action labels can be from arbitrary nominal sets. A Hennessy-Milner logic for these systems is defined, and proved adequate for bisimulation equivalence. A main novelty is the construction of an infinitary nominal data type to model formulas with (finitely supported) infinite conjunctions and actions that may contain binding names. The logic is generalized to treat different bisimulation variants such as early, late and open in a systematic way. extra-history = Change history: [2017-01-29]: Formalization of weak bisimilarity added (revision c87cc2057d9c) [Abs_Int_ITP2012] title = Abstract Interpretation of Annotated Commands author = Tobias Nipkow notify = nipkow@in.tum.de date = 2016-11-23 topic = Computer science/Programming languages/Static analysis abstract = This is the Isabelle formalization of the material decribed in the eponymous ITP 2012 paper. It develops a generic abstract interpreter for a while-language, including widening and narrowing. The collecting semantics and the abstract interpreter operate on annotated commands: the program is represented as a syntax tree with the semantic information directly embedded, without auxiliary labels. The aim of the formalization is simplicity, not efficiency or precision. This is motivated by the inclusion of the material in a theorem prover based course on semantics. A similar (but more polished) development is covered in the book Concrete Semantics. [Complx] title = COMPLX: A Verification Framework for Concurrent Imperative Programs author = Sidney Amani<>, June Andronick<>, Maksym Bortin<>, Corey Lewis<>, Christine Rizkallah<>, Joseph Tuong<> notify = sidney.amani@data61.csiro.au, corey.lewis@data61.csiro.au date = 2016-11-29 topic = Computer science/Programming languages/Logics, Computer science/Programming languages/Language definitions abstract = We propose a concurrency reasoning framework for imperative programs, based on the Owicki-Gries (OG) foundational shared-variable concurrency method. Our framework combines the approaches of Hoare-Parallel, a formalisation of OG in Isabelle/HOL for a simple while-language, and Simpl, a generic imperative language embedded in Isabelle/HOL, allowing formal reasoning on C programs. We define the Complx language, extending the syntax and semantics of Simpl with support for parallel composition and synchronisation. We additionally define an OG logic, which we prove sound w.r.t. the semantics, and a verification condition generator, both supporting involved low-level imperative constructs such as function calls and abrupt termination. We illustrate our framework on an example that features exceptions, guards and function calls. We aim to then target concurrent operating systems, such as the interruptible eChronos embedded operating system for which we already have a model-level OG proof using Hoare-Parallel. extra-history = Change history: [2017-01-13]: Improve VCG for nested parallels and sequential sections (revision 30739dbc3dcb) [Paraconsistency] title = Paraconsistency author = Anders Schlichtkrull , Jørgen Villadsen topic = Logic/General logic/Paraconsistent logics date = 2016-12-07 notify = andschl@dtu.dk, jovi@dtu.dk abstract = Paraconsistency is about handling inconsistency in a coherent way. In classical and intuitionistic logic everything follows from an inconsistent theory. A paraconsistent logic avoids the explosion. Quite a few applications in computer science and engineering are discussed in the Intelligent Systems Reference Library Volume 110: Towards Paraconsistent Engineering (Springer 2016). We formalize a paraconsistent many-valued logic that we motivated and described in a special issue on logical approaches to paraconsistency (Journal of Applied Non-Classical Logics 2005). We limit ourselves to the propositional fragment of the higher-order logic. The logic is based on so-called key equalities and has a countably infinite number of truth values. We prove theorems in the logic using the definition of validity. We verify truth tables and also counterexamples for non-theorems. We prove meta-theorems about the logic and finally we investigate a case study. [Proof_Strategy_Language] title = Proof Strategy Language author = Yutaka Nagashima<> topic = Tools date = 2016-12-20 notify = Yutaka.Nagashima@data61.csiro.au abstract = Isabelle includes various automatic tools for finding proofs under certain conditions. However, for each conjecture, knowing which automation to use, and how to tweak its parameters, is currently labour intensive. We have developed a language, PSL, designed to capture high level proof strategies. PSL offloads the construction of human-readable fast-to-replay proof scripts to automatic search, making use of search-time information about each conjecture. Our preliminary evaluations show that PSL reduces the labour cost of interactive theorem proving. This submission contains the implementation of PSL and an example theory file, Example.thy, showing how to write poof strategies in PSL. [Concurrent_Ref_Alg] title = Concurrent Refinement Algebra and Rely Quotients author = Julian Fell , Ian J. Hayes , Andrius Velykis topic = Computer science/Concurrency date = 2016-12-30 notify = Ian.Hayes@itee.uq.edu.au abstract = The concurrent refinement algebra developed here is designed to provide a foundation for rely/guarantee reasoning about concurrent programs. The algebra builds on a complete lattice of commands by providing sequential composition, parallel composition and a novel weak conjunction operator. The weak conjunction operator coincides with the lattice supremum providing its arguments are non-aborting, but aborts if either of its arguments do. Weak conjunction provides an abstract version of a guarantee condition as a guarantee process. We distinguish between models that distribute sequential composition over non-deterministic choice from the left (referred to as being conjunctive in the refinement calculus literature) and those that don't. Least and greatest fixed points of monotone functions are provided to allow recursion and iteration operators to be added to the language. Additional iteration laws are available for conjunctive models. The rely quotient of processes c and i is the process that, if executed in parallel with i implements c. It represents an abstract version of a rely condition generalised to a process. [FOL_Harrison] title = First-Order Logic According to Harrison author = Alexander Birch Jensen , Anders Schlichtkrull , Jørgen Villadsen topic = Logic/General logic/Mechanization of proofs date = 2017-01-01 notify = aleje@dtu.dk, andschl@dtu.dk, jovi@dtu.dk abstract =

We present a certified declarative first-order prover with equality based on John Harrison's Handbook of Practical Logic and Automated Reasoning, Cambridge University Press, 2009. ML code reflection is used such that the entire prover can be executed within Isabelle as a very simple interactive proof assistant. As examples we consider Pelletier's problems 1-46.

Reference: Programming and Verifying a Declarative First-Order Prover in Isabelle/HOL. Alexander Birch Jensen, John Bruntse Larsen, Anders Schlichtkrull & Jørgen Villadsen. AI Communications 31:281-299 2018. https://content.iospress.com/articles/ai-communications/aic764

See also: Students' Proof Assistant (SPA). https://github.com/logic-tools/spa

extra-history = Change history: [2018-07-21]: Proof of Pelletier's problem 34 (Andrews's Challenge) thanks to Asta Halkjær From. [Bernoulli] title = Bernoulli Numbers author = Lukas Bulwahn, Manuel Eberl topic = Mathematics/Analysis, Mathematics/Number theory date = 2017-01-24 notify = eberlm@in.tum.de abstract =

Bernoulli numbers were first discovered in the closed-form expansion of the sum 1m + 2m + … + nm for a fixed m and appear in many other places. This entry provides three different definitions for them: a recursive one, an explicit one, and one through their exponential generating function.

In addition, we prove some basic facts, e.g. their relation to sums of powers of integers and that all odd Bernoulli numbers except the first are zero, and some advanced facts like their relationship to the Riemann zeta function on positive even integers.

We also prove the correctness of the Akiyama–Tanigawa algorithm for computing Bernoulli numbers with reasonable efficiency, and we define the periodic Bernoulli polynomials (which appear e.g. in the Euler–MacLaurin summation formula and the expansion of the log-Gamma function) and prove their basic properties.

[Stone_Relation_Algebras] title = Stone Relation Algebras author = Walter Guttmann topic = Mathematics/Algebra date = 2017-02-07 notify = walter.guttmann@canterbury.ac.nz abstract = We develop Stone relation algebras, which generalise relation algebras by replacing the underlying Boolean algebra structure with a Stone algebra. We show that finite matrices over extended real numbers form an instance. As a consequence, relation-algebraic concepts and methods can be used for reasoning about weighted graphs. We also develop a fixpoint calculus and apply it to compare different definitions of reflexive-transitive closures in semirings. [Stone_Kleene_Relation_Algebras] title = Stone-Kleene Relation Algebras author = Walter Guttmann topic = Mathematics/Algebra date = 2017-07-06 notify = walter.guttmann@canterbury.ac.nz abstract = We develop Stone-Kleene relation algebras, which expand Stone relation algebras with a Kleene star operation to describe reachability in weighted graphs. Many properties of the Kleene star arise as a special case of a more general theory of iteration based on Conway semirings extended by simulation axioms. This includes several theorems representing complex program transformations. We formally prove the correctness of Conway's automata-based construction of the Kleene star of a matrix. We prove numerous results useful for reasoning about weighted graphs. [Abstract_Soundness] title = Abstract Soundness author = Jasmin Christian Blanchette , Andrei Popescu , Dmitriy Traytel topic = Logic/Proof theory date = 2017-02-10 notify = jasmin.blanchette@gmail.com abstract = A formalized coinductive account of the abstract development of Brotherston, Gorogiannis, and Petersen [APLAS 2012], in a slightly more general form since we work with arbitrary infinite proofs, which may be acyclic. This work is described in detail in an article by the authors, published in 2017 in the Journal of Automated Reasoning. The abstract proof can be instantiated for various formalisms, including first-order logic with inductive predicates. [Differential_Dynamic_Logic] title = Differential Dynamic Logic author = Brandon Bohrer topic = Logic/General logic/Modal logic, Computer science/Programming languages/Logics date = 2017-02-13 notify = bbohrer@cs.cmu.edu abstract = We formalize differential dynamic logic, a logic for proving properties of hybrid systems. The proof calculus in this formalization is based on the uniform substitution principle. We show it is sound with respect to our denotational semantics, which provides increased confidence in the correctness of the KeYmaera X theorem prover based on this calculus. As an application, we include a proof term checker embedded in Isabelle/HOL with several example proofs. Published in: Brandon Bohrer, Vincent Rahli, Ivana Vukotic, Marcus Völp, André Platzer: Formally verified differential dynamic logic. CPP 2017. [Syntax_Independent_Logic] title = Syntax-Independent Logic Infrastructure author = Andrei Popescu , Dmitriy Traytel topic = Logic/Proof theory date = 2020-09-16 notify = a.popescu@sheffield.ac.uk, traytel@di.ku.dk abstract = We formalize a notion of logic whose terms and formulas are kept abstract. In particular, logical connectives, substitution, free variables, and provability are not defined, but characterized by their general properties as locale assumptions. Based on this abstract characterization, we develop further reusable reasoning infrastructure. For example, we define parallel substitution (along with proving its characterizing theorems) from single-point substitution. Similarly, we develop a natural deduction style proof system starting from the abstract Hilbert-style one. These one-time efforts benefit different concrete logics satisfying our locales' assumptions. We instantiate the syntax-independent logic infrastructure to Robinson arithmetic (also known as Q) in the AFP entry Robinson_Arithmetic and to hereditarily finite set theory in the AFP entries Goedel_HFSet_Semantic and Goedel_HFSet_Semanticless, which are part of our formalization of Gödel's Incompleteness Theorems described in our CADE-27 paper A Formally Verified Abstract Account of Gödel's Incompleteness Theorems. [Goedel_Incompleteness] title = An Abstract Formalization of Gödel's Incompleteness Theorems author = Andrei Popescu , Dmitriy Traytel topic = Logic/Proof theory date = 2020-09-16 notify = a.popescu@sheffield.ac.uk, traytel@di.ku.dk abstract = We present an abstract formalization of Gödel's incompleteness theorems. We analyze sufficient conditions for the theorems' applicability to a partially specified logic. Our abstract perspective enables a comparison between alternative approaches from the literature. These include Rosser's variation of the first theorem, Jeroslow's variation of the second theorem, and the Swierczkowski–Paulson semantics-based approach. This AFP entry is the main entry point to the results described in our CADE-27 paper A Formally Verified Abstract Account of Gödel's Incompleteness Theorems. As part of our abstract formalization's validation, we instantiate our locales twice in the separate AFP entries Goedel_HFSet_Semantic and Goedel_HFSet_Semanticless. [Goedel_HFSet_Semantic] title = From Abstract to Concrete Gödel's Incompleteness Theorems—Part I author = Andrei Popescu , Dmitriy Traytel topic = Logic/Proof theory date = 2020-09-16 notify = a.popescu@sheffield.ac.uk, traytel@di.ku.dk abstract = We validate an abstract formulation of Gödel's First and Second Incompleteness Theorems from a separate AFP entry by instantiating them to the case of finite sound extensions of the Hereditarily Finite (HF) Set theory, i.e., FOL theories extending the HF Set theory with a finite set of axioms that are sound in the standard model. The concrete results had been previously formalised in an AFP entry by Larry Paulson; our instantiation reuses the infrastructure developed in that entry. [Goedel_HFSet_Semanticless] title = From Abstract to Concrete Gödel's Incompleteness Theorems—Part II author = Andrei Popescu , Dmitriy Traytel topic = Logic/Proof theory date = 2020-09-16 notify = a.popescu@sheffield.ac.uk, traytel@di.ku.dk abstract = We validate an abstract formulation of Gödel's Second Incompleteness Theorem from a separate AFP entry by instantiating it to the case of finite consistent extensions of the Hereditarily Finite (HF) Set theory, i.e., consistent FOL theories extending the HF Set theory with a finite set of axioms. The instantiation draws heavily on infrastructure previously developed by Larry Paulson in his direct formalisation of the concrete result. It strengthens Paulson's formalization of Gödel's Second from that entry by not assuming soundness, and in fact not relying on any notion of model or semantic interpretation. The strengthening was obtained by first replacing some of Paulson’s semantic arguments with proofs within his HF calculus, and then plugging in some of Paulson's (modified) lemmas to instantiate our soundness-free Gödel's Second locale. [Robinson_Arithmetic] title = Robinson Arithmetic author = Andrei Popescu , Dmitriy Traytel topic = Logic/Proof theory date = 2020-09-16 notify = a.popescu@sheffield.ac.uk, traytel@di.ku.dk abstract = We instantiate our syntax-independent logic infrastructure developed in a separate AFP entry to the FOL theory of Robinson arithmetic (also known as Q). The latter was formalised using Nominal Isabelle by adapting Larry Paulson’s formalization of the Hereditarily Finite Set theory. [Elliptic_Curves_Group_Law] title = The Group Law for Elliptic Curves author = Stefan Berghofer topic = Computer science/Security/Cryptography date = 2017-02-28 notify = berghofe@in.tum.de abstract = We prove the group law for elliptic curves in Weierstrass form over fields of characteristic greater than 2. In addition to affine coordinates, we also formalize projective coordinates, which allow for more efficient computations. By specializing the abstract formalization to prime fields, we can apply the curve operations to parameters used in standard security protocols. [Example-Submission] title = Example Submission author = Gerwin Klein topic = Mathematics/Analysis, Mathematics/Number theory date = 2004-02-25 notify = kleing@cse.unsw.edu.au abstract =

This is an example submission to the Archive of Formal Proofs. It shows submission requirements and explains the structure of a simple typical submission.

Note that you can use HTML tags and LaTeX formulae like $\sum_{n=1}^\infty \frac{1}{n^2} = \frac{\pi^2}{6}$ in the abstract. Display formulae like $$ \int_0^1 x^{-x}\,\text{d}x = \sum_{n=1}^\infty n^{-n}$$ are also possible. Please read the submission guidelines before using this.

extra-no-index = no-index: true [CRDT] title = A framework for establishing Strong Eventual Consistency for Conflict-free Replicated Datatypes author = Victor B. F. Gomes , Martin Kleppmann, Dominic P. Mulligan, Alastair R. Beresford topic = Computer science/Algorithms/Distributed, Computer science/Data structures date = 2017-07-07 notify = vb358@cam.ac.uk, dominic.p.mulligan@googlemail.com abstract = In this work, we focus on the correctness of Conflict-free Replicated Data Types (CRDTs), a class of algorithm that provides strong eventual consistency guarantees for replicated data. We develop a modular and reusable framework for verifying the correctness of CRDT algorithms. We avoid correctness issues that have dogged previous mechanised proofs in this area by including a network model in our formalisation, and proving that our theorems hold in all possible network behaviours. Our axiomatic network model is a standard abstraction that accurately reflects the behaviour of real-world computer networks. Moreover, we identify an abstract convergence theorem, a property of order relations, which provides a formal definition of strong eventual consistency. We then obtain the first machine-checked correctness theorems for three concrete CRDTs: the Replicated Growable Array, the Observed-Remove Set, and an Increment-Decrement Counter. [HOLCF-Prelude] title = HOLCF-Prelude author = Joachim Breitner, Brian Huffman<>, Neil Mitchell<>, Christian Sternagel topic = Computer science/Functional programming date = 2017-07-15 notify = c.sternagel@gmail.com, joachim@cis.upenn.edu, hupel@in.tum.de abstract = The Isabelle/HOLCF-Prelude is a formalization of a large part of Haskell's standard prelude in Isabelle/HOLCF. We use it to prove the correctness of the Eratosthenes' Sieve, in its self-referential implementation commonly used to showcase Haskell's laziness; prove correctness of GHC's "fold/build" rule and related rewrite rules; and certify a number of hints suggested by HLint. [Decl_Sem_Fun_PL] title = Declarative Semantics for Functional Languages author = Jeremy Siek topic = Computer science/Programming languages date = 2017-07-21 notify = jsiek@indiana.edu abstract = We present a semantics for an applied call-by-value lambda-calculus that is compositional, extensional, and elementary. We present four different views of the semantics: 1) as a relational (big-step) semantics that is not operational but instead declarative, 2) as a denotational semantics that does not use domain theory, 3) as a non-deterministic interpreter, and 4) as a variant of the intersection type systems of the Torino group. We prove that the semantics is correct by showing that it is sound and complete with respect to operational semantics on programs and that is sound with respect to contextual equivalence. We have not yet investigated whether it is fully abstract. We demonstrate that this approach to semantics is useful with three case studies. First, we use the semantics to prove correctness of a compiler optimization that inlines function application. Second, we adapt the semantics to the polymorphic lambda-calculus extended with general recursion and prove semantic type soundness. Third, we adapt the semantics to the call-by-value lambda-calculus with mutable references.
The paper that accompanies these Isabelle theories is available on arXiv. [DynamicArchitectures] title = Dynamic Architectures author = Diego Marmsoler topic = Computer science/System description languages date = 2017-07-28 notify = diego.marmsoler@tum.de abstract = The architecture of a system describes the system's overall organization into components and connections between those components. With the emergence of mobile computing, dynamic architectures have become increasingly important. In such architectures, components may appear or disappear, and connections may change over time. In the following we mechanize a theory of dynamic architectures and verify the soundness of a corresponding calculus. Therefore, we first formalize the notion of configuration traces as a model for dynamic architectures. Then, the behavior of single components is formalized in terms of behavior traces and an operator is introduced and studied to extract the behavior of a single component out of a given configuration trace. Then, behavior trace assertions are introduced as a temporal specification technique to specify behavior of components. Reasoning about component behavior in a dynamic context is formalized in terms of a calculus for dynamic architectures. Finally, the soundness of the calculus is verified by introducing an alternative interpretation for behavior trace assertions over configuration traces and proving the rules of the calculus. Since projection may lead to finite as well as infinite behavior traces, they are formalized in terms of coinductive lists. Thus, our theory is based on Lochbihler's formalization of coinductive lists. The theory may be applied to verify properties for dynamic architectures. extra-history = Change history: [2018-06-07]: adding logical operators to specify configuration traces (revision 09178f08f050)
[Stewart_Apollonius] title = Stewart's Theorem and Apollonius' Theorem author = Lukas Bulwahn topic = Mathematics/Geometry date = 2017-07-31 notify = lukas.bulwahn@gmail.com abstract = This entry formalizes the two geometric theorems, Stewart's and Apollonius' theorem. Stewart's Theorem relates the length of a triangle's cevian to the lengths of the triangle's two sides. Apollonius' Theorem is a specialisation of Stewart's theorem, restricting the cevian to be the median. The proof applies the law of cosines, some basic geometric facts about triangles and then simply transforms the terms algebraically to yield the conjectured relation. The formalization in Isabelle can closely follow the informal proofs described in the Wikipedia articles of those two theorems. [LambdaMu] title = The LambdaMu-calculus author = Cristina Matache , Victor B. F. Gomes , Dominic P. Mulligan topic = Computer science/Programming languages/Lambda calculi, Logic/General logic/Lambda calculus date = 2017-08-16 notify = victorborgesfg@gmail.com, dominic.p.mulligan@googlemail.com abstract = The propositions-as-types correspondence is ordinarily presented as linking the metatheory of typed λ-calculi and the proof theory of intuitionistic logic. Griffin observed that this correspondence could be extended to classical logic through the use of control operators. This observation set off a flurry of further research, leading to the development of Parigots λμ-calculus. In this work, we formalise λμ- calculus in Isabelle/HOL and prove several metatheoretical properties such as type preservation and progress. [Orbit_Stabiliser] title = Orbit-Stabiliser Theorem with Application to Rotational Symmetries author = Jonas Rädle topic = Mathematics/Algebra date = 2017-08-20 notify = jonas.raedle@tum.de abstract = The Orbit-Stabiliser theorem is a basic result in the algebra of groups that factors the order of a group into the sizes of its orbits and stabilisers. We formalize the notion of a group action and the related concepts of orbits and stabilisers. This allows us to prove the orbit-stabiliser theorem. In the second part of this work, we formalize the tetrahedral group and use the orbit-stabiliser theorem to prove that there are twelve (orientation-preserving) rotations of the tetrahedron. [PLM] title = Representation and Partial Automation of the Principia Logico-Metaphysica in Isabelle/HOL author = Daniel Kirchner topic = Logic/Philosophical aspects date = 2017-09-17 notify = daniel@ekpyron.org abstract =

We present an embedding of the second-order fragment of the Theory of Abstract Objects as described in Edward Zalta's upcoming work Principia Logico-Metaphysica (PLM) in the automated reasoning framework Isabelle/HOL. The Theory of Abstract Objects is a metaphysical theory that reifies property patterns, as they for example occur in the abstract reasoning of mathematics, as abstract objects and provides an axiomatic framework that allows to reason about these objects. It thereby serves as a fundamental metaphysical theory that can be used to axiomatize and describe a wide range of philosophical objects, such as Platonic forms or Leibniz' concepts, and has the ambition to function as a foundational theory of mathematics. The target theory of our embedding as described in chapters 7-9 of PLM employs a modal relational type theory as logical foundation for which a representation in functional type theory is known to be challenging.

Nevertheless we arrive at a functioning representation of the theory in the functional logic of Isabelle/HOL based on a semantical representation of an Aczel-model of the theory. Based on this representation we construct an implementation of the deductive system of PLM which allows to automatically and interactively find and verify theorems of PLM.

Our work thereby supports the concept of shallow semantical embeddings of logical systems in HOL as a universal tool for logical reasoning as promoted by Christoph Benzmüller.

The most notable result of the presented work is the discovery of a previously unknown paradox in the formulation of the Theory of Abstract Objects. The embedding of the theory in Isabelle/HOL played a vital part in this discovery. Furthermore it was possible to immediately offer several options to modify the theory to guarantee its consistency. Thereby our work could provide a significant contribution to the development of a proper grounding for object theory.

[KD_Tree] title = Multidimensional Binary Search Trees author = Martin Rau<> topic = Computer science/Data structures date = 2019-05-30 notify = martin.rau@tum.de, mrtnrau@googlemail.com abstract = This entry provides a formalization of multidimensional binary trees, also known as k-d trees. It includes a balanced build algorithm as well as the nearest neighbor algorithm and the range search algorithm. It is based on the papers Multidimensional binary search trees used for associative searching and An Algorithm for Finding Best Matches in Logarithmic Expected Time. extra-history = Change history: [2020-15-04]: Change representation of k-dimensional points from 'list' to HOL-Analysis.Finite_Cartesian_Product 'vec'. Update proofs to incorporate HOL-Analysis 'dist' and 'cbox' primitives. [Closest_Pair_Points] title = Closest Pair of Points Algorithms author = Martin Rau , Tobias Nipkow topic = Computer science/Algorithms/Geometry date = 2020-01-13 notify = martin.rau@tum.de, nipkow@in.tum.de abstract = This entry provides two related verified divide-and-conquer algorithms solving the fundamental Closest Pair of Points problem in Computational Geometry. Functional correctness and the optimal running time of O(n log n) are proved. Executable code is generated which is empirically competitive with handwritten reference implementations. extra-history = Change history: [2020-14-04]: Incorporate Time_Monad of the AFP entry Root_Balanced_Tree. [Approximation_Algorithms] title = Verified Approximation Algorithms author = Robin Eßmann , Tobias Nipkow , Simon Robillard topic = Computer science/Algorithms/Approximation date = 2020-01-16 notify = nipkow@in.tum.de abstract = We present the first formal verification of approximation algorithms for NP-complete optimization problems: vertex cover, independent set, load balancing, and bin packing. The proofs correct incompletenesses in existing proofs and improve the approximation ratio in one case. [Diophantine_Eqns_Lin_Hom] title = Homogeneous Linear Diophantine Equations author = Florian Messner , Julian Parsert , Jonas Schöpf , Christian Sternagel topic = Computer science/Algorithms/Mathematical, Mathematics/Number theory, Tools license = LGPL date = 2017-10-14 notify = c.sternagel@gmail.com, julian.parsert@gmail.com abstract = We formalize the theory of homogeneous linear diophantine equations, focusing on two main results: (1) an abstract characterization of minimal complete sets of solutions, and (2) an algorithm computing them. Both, the characterization and the algorithm are based on previous work by Huet. Our starting point is a simple but inefficient variant of Huet's lexicographic algorithm incorporating improved bounds due to Clausen and Fortenbacher. We proceed by proving its soundness and completeness. Finally, we employ code equations to obtain a reasonably efficient implementation. Thus, we provide a formally verified solver for homogeneous linear diophantine equations. [Winding_Number_Eval] title = Evaluate Winding Numbers through Cauchy Indices author = Wenda Li topic = Mathematics/Analysis date = 2017-10-17 notify = wl302@cam.ac.uk, liwenda1990@hotmail.com abstract = In complex analysis, the winding number measures the number of times a path (counterclockwise) winds around a point, while the Cauchy index can approximate how the path winds. This entry provides a formalisation of the Cauchy index, which is then shown to be related to the winding number. In addition, this entry also offers a tactic that enables users to evaluate the winding number by calculating Cauchy indices. [Count_Complex_Roots] title = Count the Number of Complex Roots author = Wenda Li topic = Mathematics/Analysis date = 2017-10-17 notify = wl302@cam.ac.uk, liwenda1990@hotmail.com abstract = Based on evaluating Cauchy indices through remainder sequences, this entry provides an effective procedure to count the number of complex roots (with multiplicity) of a polynomial within a rectangle box or a half-plane. Potential applications of this entry include certified complex root isolation (of a polynomial) and testing the Routh-Hurwitz stability criterion (i.e., to check whether all the roots of some characteristic polynomial have negative real parts). [Buchi_Complementation] title = Büchi Complementation author = Julian Brunner topic = Computer science/Automata and formal languages date = 2017-10-19 notify = brunnerj@in.tum.de abstract = This entry provides a verified implementation of rank-based Büchi Complementation. The verification is done in three steps:
  1. Definition of odd rankings and proof that an automaton rejects a word iff there exists an odd ranking for it.
  2. Definition of the complement automaton and proof that it accepts exactly those words for which there is an odd ranking.
  3. Verified implementation of the complement automaton using the Isabelle Collections Framework.
[Transition_Systems_and_Automata] title = Transition Systems and Automata author = Julian Brunner topic = Computer science/Automata and formal languages date = 2017-10-19 notify = brunnerj@in.tum.de abstract = This entry provides a very abstract theory of transition systems that can be instantiated to express various types of automata. A transition system is typically instantiated by providing a set of initial states, a predicate for enabled transitions, and a transition execution function. From this, it defines the concepts of finite and infinite paths as well as the set of reachable states, among other things. Many useful theorems, from basic path manipulation rules to coinduction and run construction rules, are proven in this abstract transition system context. The library comes with instantiations for DFAs, NFAs, and Büchi automata. [Kuratowski_Closure_Complement] title = The Kuratowski Closure-Complement Theorem author = Peter Gammie , Gianpaolo Gioiosa<> topic = Mathematics/Topology date = 2017-10-26 notify = peteg42@gmail.com abstract = We discuss a topological curiosity discovered by Kuratowski (1922): the fact that the number of distinct operators on a topological space generated by compositions of closure and complement never exceeds 14, and is exactly 14 in the case of R. In addition, we prove a theorem due to Chagrov (1982) that classifies topological spaces according to the number of such operators they support. [Hybrid_Multi_Lane_Spatial_Logic] title = Hybrid Multi-Lane Spatial Logic author = Sven Linker topic = Logic/General logic/Modal logic date = 2017-11-06 notify = s.linker@liverpool.ac.uk abstract = We present a semantic embedding of a spatio-temporal multi-modal logic, specifically defined to reason about motorway traffic, into Isabelle/HOL. The semantic model is an abstraction of a motorway, emphasising local spatial properties, and parameterised by the types of sensors deployed in the vehicles. We use the logic to define controller constraints to ensure safety, i.e., the absence of collisions on the motorway. After proving safety with a restrictive definition of sensors, we relax these assumptions and show how to amend the controller constraints to still guarantee safety. [Dirichlet_L] title = Dirichlet L-Functions and Dirichlet's Theorem author = Manuel Eberl topic = Mathematics/Number theory, Mathematics/Algebra date = 2017-12-21 notify = eberlm@in.tum.de abstract =

This article provides a formalisation of Dirichlet characters and Dirichlet L-functions including proofs of their basic properties – most notably their analyticity, their areas of convergence, and their non-vanishing for ℜ(s) ≥ 1. All of this is built in a very high-level style using Dirichlet series. The proof of the non-vanishing follows a very short and elegant proof by Newman, which we attempt to reproduce faithfully in a similar level of abstraction in Isabelle.

This also leads to a relatively short proof of Dirichlet’s Theorem, which states that, if h and n are coprime, there are infinitely many primes p with ph (mod n).

[Symmetric_Polynomials] title = Symmetric Polynomials author = Manuel Eberl topic = Mathematics/Algebra date = 2018-09-25 notify = eberlm@in.tum.de abstract =

A symmetric polynomial is a polynomial in variables X1,…,Xn that does not discriminate between its variables, i. e. it is invariant under any permutation of them. These polynomials are important in the study of the relationship between the coefficients of a univariate polynomial and its roots in its algebraic closure.

This article provides a definition of symmetric polynomials and the elementary symmetric polynomials e1,…,en and proofs of their basic properties, including three notable ones:

  • Vieta's formula, which gives an explicit expression for the k-th coefficient of a univariate monic polynomial in terms of its roots x1,…,xn, namely ck = (-1)n-k en-k(x1,…,xn).
  • Second, the Fundamental Theorem of Symmetric Polynomials, which states that any symmetric polynomial is itself a uniquely determined polynomial combination of the elementary symmetric polynomials.
  • Third, as a corollary of the previous two, that given a polynomial over some ring R, any symmetric polynomial combination of its roots is also in R even when the roots are not.

Both the symmetry property itself and the witness for the Fundamental Theorem are executable.

[Taylor_Models] title = Taylor Models author = Christoph Traut<>, Fabian Immler topic = Computer science/Algorithms/Mathematical, Computer science/Data structures, Mathematics/Analysis, Mathematics/Algebra date = 2018-01-08 notify = immler@in.tum.de abstract = We present a formally verified implementation of multivariate Taylor models. Taylor models are a form of rigorous polynomial approximation, consisting of an approximation polynomial based on Taylor expansions, combined with a rigorous bound on the approximation error. Taylor models were introduced as a tool to mitigate the dependency problem of interval arithmetic. Our implementation automatically computes Taylor models for the class of elementary functions, expressed by composition of arithmetic operations and basic functions like exp, sin, or square root. [Green] title = An Isabelle/HOL formalisation of Green's Theorem author = Mohammad Abdulaziz , Lawrence C. Paulson topic = Mathematics/Analysis date = 2018-01-11 notify = mohammad.abdulaziz8@gmail.com, lp15@cam.ac.uk abstract = We formalise a statement of Green’s theorem—the first formalisation to our knowledge—in Isabelle/HOL. The theorem statement that we formalise is enough for most applications, especially in physics and engineering. Our formalisation is made possible by a novel proof that avoids the ubiquitous line integral cancellation argument. This eliminates the need to formalise orientations and region boundaries explicitly with respect to the outwards-pointing normal vector. Instead we appeal to a homological argument about equivalences between paths. [AI_Planning_Languages_Semantics] title = AI Planning Languages Semantics author = Mohammad Abdulaziz , Peter Lammich topic = Computer science/Artificial intelligence date = 2020-10-29 notify = mohammad.abdulaziz8@gmail.com abstract = This is an Isabelle/HOL formalisation of the semantics of the multi-valued planning tasks language that is used by the planning system Fast-Downward, the STRIPS fragment of the Planning Domain Definition Language (PDDL), and the STRIPS soundness meta-theory developed by Vladimir Lifschitz. It also contains formally verified checkers for checking the well-formedness of problems specified in either language as well the correctness of potential solutions. The formalisation in this entry was described in an earlier publication. [Verified_SAT_Based_AI_Planning] title = Verified SAT-Based AI Planning author = Mohammad Abdulaziz , Friedrich Kurz <> topic = Computer science/Artificial intelligence date = 2020-10-29 notify = mohammad.abdulaziz8@gmail.com abstract = We present an executable formally verified SAT encoding of classical AI planning that is based on the encodings by Kautz and Selman and the one by Rintanen et al. The encoding was experimentally tested and shown to be usable for reasonably sized standard AI planning benchmarks. We also use it as a reference to test a state-of-the-art SAT-based planner, showing that it sometimes falsely claims that problems have no solutions of certain lengths. The formalisation in this submission was described in an independent publication. [Gromov_Hyperbolicity] title = Gromov Hyperbolicity author = Sebastien Gouezel<> topic = Mathematics/Geometry date = 2018-01-16 notify = sebastien.gouezel@univ-rennes1.fr abstract = A geodesic metric space is Gromov hyperbolic if all its geodesic triangles are thin, i.e., every side is contained in a fixed thickening of the two other sides. While this definition looks innocuous, it has proved extremely important and versatile in modern geometry since its introduction by Gromov. We formalize the basic classical properties of Gromov hyperbolic spaces, notably the Morse lemma asserting that quasigeodesics are close to geodesics, the invariance of hyperbolicity under quasi-isometries, we define and study the Gromov boundary and its associated distance, and prove that a quasi-isometry between Gromov hyperbolic spaces extends to a homeomorphism of the boundaries. We also prove a less classical theorem, by Bonk and Schramm, asserting that a Gromov hyperbolic space embeds isometrically in a geodesic Gromov-hyperbolic space. As the original proof uses a transfinite sequence of Cauchy completions, this is an interesting formalization exercise. Along the way, we introduce basic material on isometries, quasi-isometries, Lipschitz maps, geodesic spaces, the Hausdorff distance, the Cauchy completion of a metric space, and the exponential on extended real numbers. [Ordered_Resolution_Prover] title = Formalization of Bachmair and Ganzinger's Ordered Resolution Prover author = Anders Schlichtkrull , Jasmin Christian Blanchette , Dmitriy Traytel , Uwe Waldmann topic = Logic/General logic/Mechanization of proofs date = 2018-01-18 notify = andschl@dtu.dk, j.c.blanchette@vu.nl abstract = This Isabelle/HOL formalization covers Sections 2 to 4 of Bachmair and Ganzinger's "Resolution Theorem Proving" chapter in the Handbook of Automated Reasoning. This includes soundness and completeness of unordered and ordered variants of ground resolution with and without literal selection, the standard redundancy criterion, a general framework for refutational theorem proving, and soundness and completeness of an abstract first-order prover. [Chandy_Lamport] title = A Formal Proof of The Chandy--Lamport Distributed Snapshot Algorithm author = Ben Fiedler , Dmitriy Traytel topic = Computer science/Algorithms/Distributed date = 2020-07-21 notify = ben.fiedler@inf.ethz.ch, traytel@inf.ethz.ch abstract = We provide a suitable distributed system model and implementation of the Chandy--Lamport distributed snapshot algorithm [ACM Transactions on Computer Systems, 3, 63-75, 1985]. Our main result is a formal termination and correctness proof of the Chandy--Lamport algorithm and its use in stable property detection. [BNF_Operations] title = Operations on Bounded Natural Functors author = Jasmin Christian Blanchette , Andrei Popescu , Dmitriy Traytel topic = Tools date = 2017-12-19 notify = jasmin.blanchette@gmail.com,uuomul@yahoo.com,traytel@inf.ethz.ch abstract = This entry formalizes the closure property of bounded natural functors (BNFs) under seven operations. These operations and the corresponding proofs constitute the core of Isabelle's (co)datatype package. To be close to the implemented tactics, the proofs are deliberately formulated as detailed apply scripts. The (co)datatypes together with (co)induction principles and (co)recursors are byproducts of the fixpoint operations LFP and GFP. Composition of BNFs is subdivided into four simpler operations: Compose, Kill, Lift, and Permute. The N2M operation provides mutual (co)induction principles and (co)recursors for nested (co)datatypes. [LLL_Basis_Reduction] title = A verified LLL algorithm author = Ralph Bottesch <>, Jose Divasón , Maximilian Haslbeck , Sebastiaan Joosten , René Thiemann , Akihisa Yamada<> topic = Computer science/Algorithms/Mathematical, Mathematics/Algebra date = 2018-02-02 notify = ralph.bottesch@uibk.ac.at, jose.divason@unirioja.es, maximilian.haslbeck@uibk.ac.at, s.j.c.joosten@utwente.nl, rene.thiemann@uibk.ac.at, ayamada@trs.cm.is.nagoya-u.ac.jp abstract = The Lenstra-Lenstra-Lovász basis reduction algorithm, also known as LLL algorithm, is an algorithm to find a basis with short, nearly orthogonal vectors of an integer lattice. Thereby, it can also be seen as an approximation to solve the shortest vector problem (SVP), which is an NP-hard problem, where the approximation quality solely depends on the dimension of the lattice, but not the lattice itself. The algorithm also possesses many applications in diverse fields of computer science, from cryptanalysis to number theory, but it is specially well-known since it was used to implement the first polynomial-time algorithm to factor polynomials. In this work we present the first mechanized soundness proof of the LLL algorithm to compute short vectors in lattices. The formalization follows a textbook by von zur Gathen and Gerhard. extra-history = Change history: [2018-04-16]: Integrated formal complexity bounds (Haslbeck, Thiemann) [2018-05-25]: Integrated much faster LLL implementation based on integer arithmetic (Bottesch, Haslbeck, Thiemann) [LLL_Factorization] title = A verified factorization algorithm for integer polynomials with polynomial complexity author = Jose Divasón , Sebastiaan Joosten , René Thiemann , Akihisa Yamada topic = Mathematics/Algebra date = 2018-02-06 notify = jose.divason@unirioja.es, s.j.c.joosten@utwente.nl, rene.thiemann@uibk.ac.at, ayamada@trs.cm.is.nagoya-u.ac.jp abstract = Short vectors in lattices and factors of integer polynomials are related. Each factor of an integer polynomial belongs to a certain lattice. When factoring polynomials, the condition that we are looking for an irreducible polynomial means that we must look for a small element in a lattice, which can be done by a basis reduction algorithm. In this development we formalize this connection and thereby one main application of the LLL basis reduction algorithm: an algorithm to factor square-free integer polynomials which runs in polynomial time. The work is based on our previous Berlekamp–Zassenhaus development, where the exponential reconstruction phase has been replaced by the polynomial-time basis reduction algorithm. Thanks to this formalization we found a serious flaw in a textbook. [Treaps] title = Treaps author = Maximilian Haslbeck , Manuel Eberl , Tobias Nipkow topic = Computer science/Data structures date = 2018-02-06 notify = eberlm@in.tum.de abstract =

A Treap is a binary tree whose nodes contain pairs consisting of some payload and an associated priority. It must have the search-tree property w.r.t. the payloads and the heap property w.r.t. the priorities. Treaps are an interesting data structure that is related to binary search trees (BSTs) in the following way: if one forgets all the priorities of a treap, the resulting BST is exactly the same as if one had inserted the elements into an empty BST in order of ascending priority. This means that a treap behaves like a BST where we can pretend the elements were inserted in a different order from the one in which they were actually inserted.

In particular, by choosing these priorities at random upon insertion of an element, we can pretend that we inserted the elements in random order, so that the shape of the resulting tree is that of a random BST no matter in what order we insert the elements. This is the main result of this formalisation.

[Skip_Lists] title = Skip Lists author = Max W. Haslbeck , Manuel Eberl topic = Computer science/Data structures date = 2020-01-09 notify = max.haslbeck@gmx.de abstract =

Skip lists are sorted linked lists enhanced with shortcuts and are an alternative to binary search trees. A skip lists consists of multiple levels of sorted linked lists where a list on level n is a subsequence of the list on level n − 1. In the ideal case, elements are skipped in such a way that a lookup in a skip lists takes O(log n) time. In a randomised skip list the skipped elements are choosen randomly.

This entry contains formalized proofs of the textbook results about the expected height and the expected length of a search path in a randomised skip list.

[Mersenne_Primes] title = Mersenne primes and the Lucas–Lehmer test author = Manuel Eberl topic = Mathematics/Number theory date = 2020-01-17 notify = eberlm@in.tum.de abstract =

This article provides formal proofs of basic properties of Mersenne numbers, i. e. numbers of the form 2n - 1, and especially of Mersenne primes.

In particular, an efficient, verified, and executable version of the Lucas–Lehmer test is developed. This test decides primality for Mersenne numbers in time polynomial in n.

[Hoare_Time] title = Hoare Logics for Time Bounds author = Maximilian P. L. Haslbeck , Tobias Nipkow topic = Computer science/Programming languages/Logics date = 2018-02-26 notify = haslbema@in.tum.de abstract = We study three different Hoare logics for reasoning about time bounds of imperative programs and formalize them in Isabelle/HOL: a classical Hoare like logic due to Nielson, a logic with potentials due to Carbonneaux et al. and a separation logic following work by Atkey, Chaguérand and Pottier. These logics are formally shown to be sound and complete. Verification condition generators are developed and are shown sound and complete too. We also consider variants of the systems where we abstract from multiplicative constants in the running time bounds, thus supporting a big-O style of reasoning. Finally we compare the expressive power of the three systems. [Architectural_Design_Patterns] title = A Theory of Architectural Design Patterns author = Diego Marmsoler topic = Computer science/System description languages date = 2018-03-01 notify = diego.marmsoler@tum.de abstract = The following document formalizes and verifies several architectural design patterns. Each pattern specification is formalized in terms of a locale where the locale assumptions correspond to the assumptions which a pattern poses on an architecture. Thus, pattern specifications may build on top of each other by interpreting the corresponding locale. A pattern is verified using the framework provided by the AFP entry Dynamic Architectures. Currently, the document consists of formalizations of 4 different patterns: the singleton, the publisher subscriber, the blackboard pattern, and the blockchain pattern. Thereby, the publisher component of the publisher subscriber pattern is modeled as an instance of the singleton pattern and the blackboard pattern is modeled as an instance of the publisher subscriber pattern. In general, this entry provides the first steps towards an overall theory of architectural design patterns. extra-history = Change history: [2018-05-25]: changing the major assumption for blockchain architectures from alternative minings to relative mining frequencies (revision 5043c5c71685)
[2019-04-08]: adapting the terminology: honest instead of trusted, dishonest instead of untrusted (revision 7af3431a22ae) [Weight_Balanced_Trees] title = Weight-Balanced Trees author = Tobias Nipkow , Stefan Dirix<> topic = Computer science/Data structures date = 2018-03-13 notify = nipkow@in.tum.de abstract = This theory provides a verified implementation of weight-balanced trees following the work of Hirai and Yamamoto who proved that all parameters in a certain range are valid, i.e. guarantee that insertion and deletion preserve weight-balance. Instead of a general theorem we provide parameterized proofs of preservation of the invariant that work for many (all?) valid parameters. [Fishburn_Impossibility] title = The Incompatibility of Fishburn-Strategyproofness and Pareto-Efficiency author = Felix Brandt , Manuel Eberl , Christian Saile , Christian Stricker topic = Mathematics/Games and economics date = 2018-03-22 notify = eberlm@in.tum.de abstract =

This formalisation contains the proof that there is no anonymous Social Choice Function for at least three agents and alternatives that fulfils both Pareto-Efficiency and Fishburn-Strategyproofness. It was derived from a proof of Brandt et al., which relies on an unverified translation of a fixed finite instance of the original problem to SAT. This Isabelle proof contains a machine-checked version of both the statement for exactly three agents and alternatives and the lifting to the general case.

[BNF_CC] title = Bounded Natural Functors with Covariance and Contravariance author = Andreas Lochbihler , Joshua Schneider topic = Computer science/Functional programming, Tools date = 2018-04-24 notify = mail@andreas-lochbihler.de, joshua.schneider@inf.ethz.ch abstract = Bounded natural functors (BNFs) provide a modular framework for the construction of (co)datatypes in higher-order logic. Their functorial operations, the mapper and relator, are restricted to a subset of the parameters, namely those where recursion can take place. For certain applications, such as free theorems, data refinement, quotients, and generalised rewriting, it is desirable that these operations do not ignore the other parameters. In this article, we formalise the generalisation BNFCC that extends the mapper and relator to covariant and contravariant parameters. We show that
  1. BNFCCs are closed under functor composition and least and greatest fixpoints,
  2. subtypes inherit the BNFCC structure under conditions that generalise those for the BNF case, and
  3. BNFCCs preserve quotients under mild conditions.
These proofs are carried out for abstract BNFCCs similar to the AFP entry BNF Operations. In addition, we apply the BNFCC theory to several concrete functors. [Modular_Assembly_Kit_Security] title = An Isabelle/HOL Formalization of the Modular Assembly Kit for Security Properties author = Oliver Bračevac , Richard Gay , Sylvia Grewe , Heiko Mantel , Henning Sudbrock , Markus Tasch topic = Computer science/Security date = 2018-05-07 notify = tasch@mais.informatik.tu-darmstadt.de abstract = The "Modular Assembly Kit for Security Properties" (MAKS) is a framework for both the definition and verification of possibilistic information-flow security properties at the specification-level. MAKS supports the uniform representation of a wide range of possibilistic information-flow properties and provides support for the verification of such properties via unwinding results and compositionality results. We provide a formalization of this framework in Isabelle/HOL. [AxiomaticCategoryTheory] title = Axiom Systems for Category Theory in Free Logic author = Christoph Benzmüller , Dana Scott topic = Mathematics/Category theory date = 2018-05-23 notify = c.benzmueller@gmail.com abstract = This document provides a concise overview on the core results of our previous work on the exploration of axioms systems for category theory. Extending the previous studies (http://arxiv.org/abs/1609.01493) we include one further axiomatic theory in our experiments. This additional theory has been suggested by Mac Lane in 1948. We show that the axioms proposed by Mac Lane are equivalent to the ones we studied before, which includes an axioms set suggested by Scott in the 1970s and another axioms set proposed by Freyd and Scedrov in 1990, which we slightly modified to remedy a minor technical issue. [OpSets] title = OpSets: Sequential Specifications for Replicated Datatypes author = Martin Kleppmann , Victor B. F. Gomes , Dominic P. Mulligan , Alastair R. Beresford topic = Computer science/Algorithms/Distributed, Computer science/Data structures date = 2018-05-10 notify = vb358@cam.ac.uk abstract = We introduce OpSets, an executable framework for specifying and reasoning about the semantics of replicated datatypes that provide eventual consistency in a distributed system, and for mechanically verifying algorithms that implement these datatypes. Our approach is simple but expressive, allowing us to succinctly specify a variety of abstract datatypes, including maps, sets, lists, text, graphs, trees, and registers. Our datatypes are also composable, enabling the construction of complex data structures. To demonstrate the utility of OpSets for analysing replication algorithms, we highlight an important correctness property for collaborative text editing that has traditionally been overlooked; algorithms that do not satisfy this property can exhibit awkward interleaving of text. We use OpSets to specify this correctness property and prove that although one existing replication algorithm satisfies this property, several other published algorithms do not. [Irrationality_J_Hancl] title = Irrational Rapidly Convergent Series author = Angeliki Koutsoukou-Argyraki , Wenda Li topic = Mathematics/Number theory, Mathematics/Analysis date = 2018-05-23 notify = ak2110@cam.ac.uk, wl302@cam.ac.uk abstract = We formalize with Isabelle/HOL a proof of a theorem by J. Hancl asserting the irrationality of the sum of a series consisting of rational numbers, built up by sequences that fulfill certain properties. Even though the criterion is a number theoretic result, the proof makes use only of analytical arguments. We also formalize a corollary of the theorem for a specific series fulfilling the assumptions of the theorem. [Optimal_BST] title = Optimal Binary Search Trees author = Tobias Nipkow , Dániel Somogyi <> topic = Computer science/Algorithms, Computer science/Data structures date = 2018-05-27 notify = nipkow@in.tum.de abstract = This article formalizes recursive algorithms for the construction of optimal binary search trees given fixed access frequencies. We follow Knuth (1971), Yao (1980) and Mehlhorn (1984). The algorithms are memoized with the help of the AFP article Monadification, Memoization and Dynamic Programming, thus yielding dynamic programming algorithms. [Projective_Geometry] title = Projective Geometry author = Anthony Bordg topic = Mathematics/Geometry date = 2018-06-14 notify = apdb3@cam.ac.uk abstract = We formalize the basics of projective geometry. In particular, we give a proof of the so-called Hessenberg's theorem in projective plane geometry. We also provide a proof of the so-called Desargues's theorem based on an axiomatization of (higher) projective space geometry using the notion of rank of a matroid. This last approach allows to handle incidence relations in an homogeneous way dealing only with points and without the need of talking explicitly about lines, planes or any higher entity. [Localization_Ring] title = The Localization of a Commutative Ring author = Anthony Bordg topic = Mathematics/Algebra date = 2018-06-14 notify = apdb3@cam.ac.uk abstract = We formalize the localization of a commutative ring R with respect to a multiplicative subset (i.e. a submonoid of R seen as a multiplicative monoid). This localization is itself a commutative ring and we build the natural homomorphism of rings from R to its localization. [Minsky_Machines] title = Minsky Machines author = Bertram Felgenhauer<> topic = Logic/Computability date = 2018-08-14 notify = int-e@gmx.de abstract =

We formalize undecidablity results for Minsky machines. To this end, we also formalize recursive inseparability.

We start by proving that Minsky machines can compute arbitrary primitive recursive and recursive functions. We then show that there is a deterministic Minsky machine with one argument and two final states such that the set of inputs that are accepted in one state is recursively inseparable from the set of inputs that are accepted in the other state.

As a corollary, the set of Minsky configurations that reach the first state but not the second recursively inseparable from the set of Minsky configurations that reach the second state but not the first. In particular both these sets are undecidable.

We do not prove that recursive functions can simulate Minsky machines.

[Neumann_Morgenstern_Utility] title = Von-Neumann-Morgenstern Utility Theorem author = Julian Parsert, Cezary Kaliszyk topic = Mathematics/Games and economics license = LGPL date = 2018-07-04 notify = julian.parsert@uibk.ac.at, cezary.kaliszyk@uibk.ac.at abstract = Utility functions form an essential part of game theory and economics. In order to guarantee the existence of utility functions most of the time sufficient properties are assumed in an axiomatic manner. One famous and very common set of such assumptions is that of expected utility theory. Here, the rationality, continuity, and independence of preferences is assumed. The von-Neumann-Morgenstern Utility theorem shows that these assumptions are necessary and sufficient for an expected utility function to exists. This theorem was proven by Neumann and Morgenstern in ``Theory of Games and Economic Behavior'' which is regarded as one of the most influential works in game theory. The formalization includes formal definitions of the underlying concepts including continuity and independence of preferences. [Simplex] title = An Incremental Simplex Algorithm with Unsatisfiable Core Generation author = Filip Marić , Mirko Spasić , René Thiemann topic = Computer science/Algorithms/Optimization date = 2018-08-24 notify = rene.thiemann@uibk.ac.at abstract = We present an Isabelle/HOL formalization and total correctness proof for the incremental version of the Simplex algorithm which is used in most state-of-the-art SMT solvers. It supports extraction of satisfying assignments, extraction of minimal unsatisfiable cores, incremental assertion of constraints and backtracking. The formalization relies on stepwise program refinement, starting from a simple specification, going through a number of refinement steps, and ending up in a fully executable functional implementation. Symmetries present in the algorithm are handled with special care. [Budan_Fourier] title = The Budan-Fourier Theorem and Counting Real Roots with Multiplicity author = Wenda Li topic = Mathematics/Analysis date = 2018-09-02 notify = wl302@cam.ac.uk, liwenda1990@hotmail.com abstract = This entry is mainly about counting and approximating real roots (of a polynomial) with multiplicity. We have first formalised the Budan-Fourier theorem: given a polynomial with real coefficients, we can calculate sign variations on Fourier sequences to over-approximate the number of real roots (counting multiplicity) within an interval. When all roots are known to be real, the over-approximation becomes tight: we can utilise this theorem to count real roots exactly. It is also worth noting that Descartes' rule of sign is a direct consequence of the Budan-Fourier theorem, and has been included in this entry. In addition, we have extended previous formalised Sturm's theorem to count real roots with multiplicity, while the original Sturm's theorem only counts distinct real roots. Compared to the Budan-Fourier theorem, our extended Sturm's theorem always counts roots exactly but may suffer from greater computational cost. [Quaternions] title = Quaternions author = Lawrence C. Paulson topic = Mathematics/Algebra, Mathematics/Geometry date = 2018-09-05 notify = lp15@cam.ac.uk abstract = This theory is inspired by the HOL Light development of quaternions, but follows its own route. Quaternions are developed coinductively, as in the existing formalisation of the complex numbers. Quaternions are quickly shown to belong to the type classes of real normed division algebras and real inner product spaces. And therefore they inherit a great body of facts involving algebraic laws, limits, continuity, etc., which must be proved explicitly in the HOL Light version. The development concludes with the geometric interpretation of the product of imaginary quaternions. [Octonions] title = Octonions author = Angeliki Koutsoukou-Argyraki topic = Mathematics/Algebra, Mathematics/Geometry date = 2018-09-14 notify = ak2110@cam.ac.uk abstract = We develop the basic theory of Octonions, including various identities and properties of the octonions and of the octonionic product, a description of 7D isometries and representations of orthogonal transformations. To this end we first develop the theory of the vector cross product in 7 dimensions. The development of the theory of Octonions is inspired by that of the theory of Quaternions by Lawrence Paulson. However, we do not work within the type class real_algebra_1 because the octonionic product is not associative. [Aggregation_Algebras] title = Aggregation Algebras author = Walter Guttmann topic = Mathematics/Algebra date = 2018-09-15 notify = walter.guttmann@canterbury.ac.nz abstract = We develop algebras for aggregation and minimisation for weight matrices and for edge weights in graphs. We verify the correctness of Prim's and Kruskal's minimum spanning tree algorithms based on these algebras. We also show numerous instances of these algebras based on linearly ordered commutative semigroups. [Prime_Number_Theorem] title = The Prime Number Theorem author = Manuel Eberl , Lawrence C. Paulson topic = Mathematics/Number theory date = 2018-09-19 notify = eberlm@in.tum.de abstract =

This article provides a short proof of the Prime Number Theorem in several equivalent forms, most notably π(x) ~ x/ln x where π(x) is the number of primes no larger than x. It also defines other basic number-theoretic functions related to primes like Chebyshev's functions ϑ and ψ and the “n-th prime number” function pn. We also show various bounds and relationship between these functions are shown. Lastly, we derive Mertens' First and Second Theorem, i. e. ∑px ln p/p = ln x + O(1) and ∑px 1/p = ln ln x + M + O(1/ln x). We also give explicit bounds for the remainder terms.

The proof of the Prime Number Theorem builds on a library of Dirichlet series and analytic combinatorics. We essentially follow the presentation by Newman. The core part of the proof is a Tauberian theorem for Dirichlet series, which is proven using complex analysis and then used to strengthen Mertens' First Theorem to ∑px ln p/p = ln x + c + o(1).

A variant of this proof has been formalised before by Harrison in HOL Light, and formalisations of Selberg's elementary proof exist both by Avigad et al. in Isabelle and by Carneiro in Metamath. The advantage of the analytic proof is that, while it requires more powerful mathematical tools, it is considerably shorter and clearer. This article attempts to provide a short and clear formalisation of all components of that proof using the full range of mathematical machinery available in Isabelle, staying as close as possible to Newman's simple paper proof.

[Signature_Groebner] title = Signature-Based Gröbner Basis Algorithms author = Alexander Maletzky topic = Mathematics/Algebra, Computer science/Algorithms/Mathematical date = 2018-09-20 notify = alexander.maletzky@risc.jku.at abstract =

This article formalizes signature-based algorithms for computing Gröbner bases. Such algorithms are, in general, superior to other algorithms in terms of efficiency, and have not been formalized in any proof assistant so far. The present development is both generic, in the sense that most known variants of signature-based algorithms are covered by it, and effectively executable on concrete input thanks to Isabelle's code generator. Sample computations of benchmark problems show that the verified implementation of signature-based algorithms indeed outperforms the existing implementation of Buchberger's algorithm in Isabelle/HOL.

Besides total correctness of the algorithms, the article also proves that under certain conditions they a-priori detect and avoid all useless zero-reductions, and always return 'minimal' (in some sense) Gröbner bases if an input parameter is chosen in the right way.

The formalization follows the recent survey article by Eder and Faugère.

[Factored_Transition_System_Bounding] title = Upper Bounding Diameters of State Spaces of Factored Transition Systems author = Friedrich Kurz <>, Mohammad Abdulaziz topic = Computer science/Automata and formal languages, Mathematics/Graph theory date = 2018-10-12 notify = friedrich.kurz@tum.de, mohammad.abdulaziz@in.tum.de abstract = A completeness threshold is required to guarantee the completeness of planning as satisfiability, and bounded model checking of safety properties. One valid completeness threshold is the diameter of the underlying transition system. The diameter is the maximum element in the set of lengths of all shortest paths between pairs of states. The diameter is not calculated exactly in our setting, where the transition system is succinctly described using a (propositionally) factored representation. Rather, an upper bound on the diameter is calculated compositionally, by bounding the diameters of small abstract subsystems, and then composing those. We port a HOL4 formalisation of a compositional algorithm for computing a relatively tight upper bound on the system diameter. This compositional algorithm exploits acyclicity in the state space to achieve compositionality, and it was introduced by Abdulaziz et. al. The formalisation that we port is described as a part of another paper by Abdulaziz et. al. As a part of this porting we developed a libray about transition systems, which shall be of use in future related mechanisation efforts. [Smooth_Manifolds] title = Smooth Manifolds author = Fabian Immler , Bohua Zhan topic = Mathematics/Analysis, Mathematics/Topology date = 2018-10-22 notify = immler@in.tum.de, bzhan@ios.ac.cn abstract = We formalize the definition and basic properties of smooth manifolds in Isabelle/HOL. Concepts covered include partition of unity, tangent and cotangent spaces, and the fundamental theorem of path integrals. We also examine some concrete manifolds such as spheres and projective spaces. The formalization makes extensive use of the analysis and linear algebra libraries in Isabelle/HOL, in particular its “types-to-sets” mechanism. [Matroids] title = Matroids author = Jonas Keinholz<> topic = Mathematics/Combinatorics date = 2018-11-16 notify = eberlm@in.tum.de abstract =

This article defines the combinatorial structures known as Independence Systems and Matroids and provides basic concepts and theorems related to them. These structures play an important role in combinatorial optimisation, e. g. greedy algorithms such as Kruskal's algorithm. The development is based on Oxley's `What is a Matroid?'.

[Graph_Saturation] title = Graph Saturation author = Sebastiaan J. C. Joosten<> topic = Logic/Rewriting, Mathematics/Graph theory date = 2018-11-23 notify = sjcjoosten@gmail.com abstract = This is an Isabelle/HOL formalisation of graph saturation, closely following a paper by the author on graph saturation. Nine out of ten lemmas of the original paper are proven in this formalisation. The formalisation additionally includes two theorems that show the main premise of the paper: that consistency and entailment are decided through graph saturation. This formalisation does not give executable code, and it did not implement any of the optimisations suggested in the paper. [Functional_Ordered_Resolution_Prover] title = A Verified Functional Implementation of Bachmair and Ganzinger's Ordered Resolution Prover author = Anders Schlichtkrull , Jasmin Christian Blanchette , Dmitriy Traytel topic = Logic/General logic/Mechanization of proofs date = 2018-11-23 notify = andschl@dtu.dk,j.c.blanchette@vu.nl,traytel@inf.ethz.ch abstract = This Isabelle/HOL formalization refines the abstract ordered resolution prover presented in Section 4.3 of Bachmair and Ganzinger's "Resolution Theorem Proving" chapter in the Handbook of Automated Reasoning. The result is a functional implementation of a first-order prover. [Auto2_HOL] title = Auto2 Prover author = Bohua Zhan topic = Tools date = 2018-11-20 notify = bzhan@ios.ac.cn abstract = Auto2 is a saturation-based heuristic prover for higher-order logic, implemented as a tactic in Isabelle. This entry contains the instantiation of auto2 for Isabelle/HOL, along with two basic examples: solutions to some of the Pelletier’s problems, and elementary number theory of primes. [Order_Lattice_Props] title = Properties of Orderings and Lattices author = Georg Struth topic = Mathematics/Order date = 2018-12-11 notify = g.struth@sheffield.ac.uk abstract = These components add further fundamental order and lattice-theoretic concepts and properties to Isabelle's libraries. They follow by and large the introductory sections of the Compendium of Continuous Lattices, covering directed and filtered sets, down-closed and up-closed sets, ideals and filters, Galois connections, closure and co-closure operators. Some emphasis is on duality and morphisms between structures, as in the Compendium. To this end, three ad-hoc approaches to duality are compared. [Quantales] title = Quantales author = Georg Struth topic = Mathematics/Algebra date = 2018-12-11 notify = g.struth@sheffield.ac.uk abstract = These mathematical components formalise basic properties of quantales, together with some important models, constructions, and concepts, including quantic nuclei and conuclei. [Transformer_Semantics] title = Transformer Semantics author = Georg Struth topic = Mathematics/Algebra, Computer science/Semantics date = 2018-12-11 notify = g.struth@sheffield.ac.uk abstract = These mathematical components formalise predicate transformer semantics for programs, yet currently only for partial correctness and in the absence of faults. A first part for isotone (or monotone), Sup-preserving and Inf-preserving transformers follows Back and von Wright's approach, with additional emphasis on the quantalic structure of algebras of transformers. The second part develops Sup-preserving and Inf-preserving predicate transformers from the powerset monad, via its Kleisli category and Eilenberg-Moore algebras, with emphasis on adjunctions and dualities, as well as isomorphisms between relations, state transformers and predicate transformers. [Concurrent_Revisions] title = Formalization of Concurrent Revisions author = Roy Overbeek topic = Computer science/Concurrency date = 2018-12-25 notify = Roy.Overbeek@cwi.nl abstract = Concurrent revisions is a concurrency control model developed by Microsoft Research. It has many interesting properties that distinguish it from other well-known models such as transactional memory. One of these properties is determinacy: programs written within the model always produce the same outcome, independent of scheduling activity. The concurrent revisions model has an operational semantics, with an informal proof of determinacy. This document contains an Isabelle/HOL formalization of this semantics and the proof of determinacy. [Core_DOM] title = A Formal Model of the Document Object Model author = Achim D. Brucker , Michael Herzberg topic = Computer science/Data structures date = 2018-12-26 notify = adbrucker@0x5f.org abstract = In this AFP entry, we formalize the core of the Document Object Model (DOM). At its core, the DOM defines a tree-like data structure for representing documents in general and HTML documents in particular. It is the heart of any modern web browser. Formalizing the key concepts of the DOM is a prerequisite for the formal reasoning over client-side JavaScript programs and for the analysis of security concepts in modern web browsers. We present a formalization of the core DOM, with focus on the node-tree and the operations defined on node-trees, in Isabelle/HOL. We use the formalization to verify the functional correctness of the most important functions defined in the DOM standard. Moreover, our formalization is 1) extensible, i.e., can be extended without the need of re-proving already proven properties and 2) executable, i.e., we can generate executable code from our specification. [Core_SC_DOM] title = The Safely Composable DOM author = Achim D. Brucker , Michael Herzberg topic = Computer science/Data structures date = 2020-09-28 notify = adbrucker@0x5f.org, mail@michael-herzberg.de abstract = In this AFP entry, we formalize the core of the Safely Composable Document Object Model (SC DOM). The SC DOM improve the standard DOM (as formalized in the AFP entry "Core DOM") by strengthening the tree boundaries set by shadow roots: in the SC DOM, the shadow root is a sub-class of the document class (instead of a base class). This modifications also results in changes to some API methods (e.g., getOwnerDocument) to return the nearest shadow root rather than the document root. As a result, many API methods that, when called on a node inside a shadow tree, would previously ``break out'' and return or modify nodes that are possibly outside the shadow tree, now stay within its boundaries. This change in behavior makes programs that operate on shadow trees more predictable for the developer and allows them to make more assumptions about other code accessing the DOM. [Shadow_SC_DOM] title = A Formal Model of the Safely Composable Document Object Model with Shadow Roots author = Achim D. Brucker , Michael Herzberg topic = Computer science/Data structures date = 2020-09-28 notify = adbrucker@0x5f.org, mail@michael-herzberg.de abstract = In this AFP entry, we extend our formalization of the safely composable DOM with Shadow Roots. This is a proposal for Shadow Roots with stricter safety guarantess than the standard compliant formalization (see "Shadow DOM"). Shadow Roots are a recent proposal of the web community to support a component-based development approach for client-side web applications. Shadow roots are a significant extension to the DOM standard and, as web standards are condemned to be backward compatible, such extensions often result in complex specification that may contain unwanted subtleties that can be detected by a formalization. Our Isabelle/HOL formalization is, in the sense of object-orientation, an extension of our formalization of the core DOM and enjoys the same basic properties, i.e., it is extensible, i.e., can be extended without the need of re-proving already proven properties and executable, i.e., we can generate executable code from our specification. We exploit the executability to show that our formalization complies to the official standard of the W3C, respectively, the WHATWG. [SC_DOM_Components] title = A Formalization of Safely Composable Web Components author = Achim D. Brucker , Michael Herzberg topic = Computer science/Data structures date = 2020-09-28 notify = adbrucker@0x5f.org, mail@michael-herzberg.de abstract = While the (safely composable) DOM with shadow trees provide the technical basis for defining web components, it does neither defines the concept of web components nor specifies the safety properties that web components should guarantee. Consequently, the standard also does not discuss how or even if the methods for modifying the DOM respect component boundaries. In AFP entry, we present a formally verified model of safely composable web components and define safety properties which ensure that different web components can only interact with each other using well-defined interfaces. Moreover, our verification of the application programming interface (API) of the DOM revealed numerous invariants that implementations of the DOM API need to preserve to ensure the integrity of components. In comparison to the strict standard compliance formalization of Web Components in the AFP entry "DOM_Components", the notion of components in this entry (based on "SC_DOM" and "Shadow_SC_DOM") provides much stronger safety guarantees. [Store_Buffer_Reduction] title = A Reduction Theorem for Store Buffers author = Ernie Cohen , Norbert Schirmer topic = Computer science/Concurrency date = 2019-01-07 notify = norbert.schirmer@web.de abstract = When verifying a concurrent program, it is usual to assume that memory is sequentially consistent. However, most modern multiprocessors depend on store buffering for efficiency, and provide native sequential consistency only at a substantial performance penalty. To regain sequential consistency, a programmer has to follow an appropriate programming discipline. However, naïve disciplines, such as protecting all shared accesses with locks, are not flexible enough for building high-performance multiprocessor software. We present a new discipline for concurrent programming under TSO (total store order, with store buffer forwarding). It does not depend on concurrency primitives, such as locks. Instead, threads use ghost operations to acquire and release ownership of memory addresses. A thread can write to an address only if no other thread owns it, and can read from an address only if it owns it or it is shared and the thread has flushed its store buffer since it last wrote to an address it did not own. This discipline covers both coarse-grained concurrency (where data is protected by locks) as well as fine-grained concurrency (where atomic operations race to memory). We formalize this discipline in Isabelle/HOL, and prove that if every execution of a program in a system without store buffers follows the discipline, then every execution of the program with store buffers is sequentially consistent. Thus, we can show sequential consistency under TSO by ordinary assertional reasoning about the program, without having to consider store buffers at all. [IMP2] title = IMP2 – Simple Program Verification in Isabelle/HOL author = Peter Lammich , Simon Wimmer topic = Computer science/Programming languages/Logics, Computer science/Algorithms date = 2019-01-15 notify = lammich@in.tum.de abstract = IMP2 is a simple imperative language together with Isabelle tooling to create a program verification environment in Isabelle/HOL. The tools include a C-like syntax, a verification condition generator, and Isabelle commands for the specification of programs. The framework is modular, i.e., it allows easy reuse of already proved programs within larger programs. This entry comes with a quickstart guide and a large collection of examples, spanning basic algorithms with simple proofs to more advanced algorithms and proof techniques like data refinement. Some highlights from the examples are:
  • Bisection Square Root,
  • Extended Euclid,
  • Exponentiation by Squaring,
  • Binary Search,
  • Insertion Sort,
  • Quicksort,
  • Depth First Search.
The abstract syntax and semantics are very simple and well-documented. They are suitable to be used in a course, as extension to the IMP language which comes with the Isabelle distribution. While this entry is limited to a simple imperative language, the ideas could be extended to more sophisticated languages. [Farkas] title = Farkas' Lemma and Motzkin's Transposition Theorem author = Ralph Bottesch , Max W. Haslbeck , René Thiemann topic = Mathematics/Algebra date = 2019-01-17 notify = rene.thiemann@uibk.ac.at abstract = We formalize a proof of Motzkin's transposition theorem and Farkas' lemma in Isabelle/HOL. Our proof is based on the formalization of the simplex algorithm which, given a set of linear constraints, either returns a satisfying assignment to the problem or detects unsatisfiability. By reusing facts about the simplex algorithm we show that a set of linear constraints is unsatisfiable if and only if there is a linear combination of the constraints which evaluates to a trivially unsatisfiable inequality. [Auto2_Imperative_HOL] title = Verifying Imperative Programs using Auto2 author = Bohua Zhan topic = Computer science/Algorithms, Computer science/Data structures date = 2018-12-21 notify = bzhan@ios.ac.cn abstract = This entry contains the application of auto2 to verifying functional and imperative programs. Algorithms and data structures that are verified include linked lists, binary search trees, red-black trees, interval trees, priority queue, quicksort, union-find, Dijkstra's algorithm, and a sweep-line algorithm for detecting rectangle intersection. The imperative verification is based on Imperative HOL and its separation logic framework. A major goal of this work is to set up automation in order to reduce the length of proof that the user needs to provide, both for verifying functional programs and for working with separation logic. [UTP] title = Isabelle/UTP: Mechanised Theory Engineering for Unifying Theories of Programming author = Simon Foster , Frank Zeyda<>, Yakoub Nemouchi , Pedro Ribeiro<>, Burkhart Wolff topic = Computer science/Programming languages/Logics date = 2019-02-01 notify = simon.foster@york.ac.uk abstract = Isabelle/UTP is a mechanised theory engineering toolkit based on Hoare and He’s Unifying Theories of Programming (UTP). UTP enables the creation of denotational, algebraic, and operational semantics for different programming languages using an alphabetised relational calculus. We provide a semantic embedding of the alphabetised relational calculus in Isabelle/HOL, including new type definitions, relational constructors, automated proof tactics, and accompanying algebraic laws. Isabelle/UTP can be used to both capture laws of programming for different languages, and put these fundamental theorems to work in the creation of associated verification tools, using calculi like Hoare logics. This document describes the relational core of the UTP in Isabelle/HOL. [HOL-CSP] title = HOL-CSP Version 2.0 author = Safouan Taha , Lina Ye , Burkhart Wolff topic = Computer science/Concurrency/Process calculi, Computer science/Semantics date = 2019-04-26 notify = wolff@lri.fr abstract = This is a complete formalization of the work of Hoare and Roscoe on the denotational semantics of the Failure/Divergence Model of CSP. It follows essentially the presentation of CSP in Roscoe’s Book ”Theory and Practice of Concurrency” [8] and the semantic details in a joint Paper of Roscoe and Brooks ”An improved failures model for communicating processes". The present work is based on a prior formalization attempt, called HOL-CSP 1.0, done in 1997 by H. Tej and B. Wolff with the Isabelle proof technology available at that time. This work revealed minor, but omnipresent foundational errors in key concepts like the process invariant. The present version HOL-CSP profits from substantially improved libraries (notably HOLCF), improved automated proof techniques, and structured proof techniques in Isar and is substantially shorter but more complete. [Probabilistic_Prime_Tests] title = Probabilistic Primality Testing author = Daniel Stüwe<>, Manuel Eberl topic = Mathematics/Number theory date = 2019-02-11 notify = eberlm@in.tum.de abstract =

The most efficient known primality tests are probabilistic in the sense that they use randomness and may, with some probability, mistakenly classify a composite number as prime – but never a prime number as composite. Examples of this are the Miller–Rabin test, the Solovay–Strassen test, and (in most cases) Fermat's test.

This entry defines these three tests and proves their correctness. It also develops some of the number-theoretic foundations, such as Carmichael numbers and the Jacobi symbol with an efficient executable algorithm to compute it.

[Kruskal] title = Kruskal's Algorithm for Minimum Spanning Forest author = Maximilian P.L. Haslbeck , Peter Lammich , Julian Biendarra<> topic = Computer science/Algorithms/Graph date = 2019-02-14 notify = haslbema@in.tum.de, lammich@in.tum.de abstract = This Isabelle/HOL formalization defines a greedy algorithm for finding a minimum weight basis on a weighted matroid and proves its correctness. This algorithm is an abstract version of Kruskal's algorithm. We interpret the abstract algorithm for the cycle matroid (i.e. forests in a graph) and refine it to imperative executable code using an efficient union-find data structure. Our formalization can be instantiated for different graph representations. We provide instantiations for undirected graphs and symmetric directed graphs. [List_Inversions] title = The Inversions of a List author = Manuel Eberl topic = Computer science/Algorithms date = 2019-02-01 notify = eberlm@in.tum.de abstract =

This entry defines the set of inversions of a list, i.e. the pairs of indices that violate sortedness. It also proves the correctness of the well-known O(n log n) divide-and-conquer algorithm to compute the number of inversions.

[Prime_Distribution_Elementary] title = Elementary Facts About the Distribution of Primes author = Manuel Eberl topic = Mathematics/Number theory date = 2019-02-21 notify = eberlm@in.tum.de abstract =

This entry is a formalisation of Chapter 4 (and parts of Chapter 3) of Apostol's Introduction to Analytic Number Theory. The main topics that are addressed are properties of the distribution of prime numbers that can be shown in an elementary way (i. e. without the Prime Number Theorem), the various equivalent forms of the PNT (which imply each other in elementary ways), and consequences that follow from the PNT in elementary ways. The latter include, most notably, asymptotic bounds for the number of distinct prime factors of n, the divisor function d(n), Euler's totient function φ(n), and lcm(1,…,n).

[Safe_OCL] title = Safe OCL author = Denis Nikiforov <> topic = Computer science/Programming languages/Language definitions license = LGPL date = 2019-03-09 notify = denis.nikif@gmail.com abstract =

The theory is a formalization of the OCL type system, its abstract syntax and expression typing rules. The theory does not define a concrete syntax and a semantics. In contrast to Featherweight OCL, it is based on a deep embedding approach. The type system is defined from scratch, it is not based on the Isabelle HOL type system.

The Safe OCL distincts nullable and non-nullable types. Also the theory gives a formal definition of safe navigation operations. The Safe OCL typing rules are much stricter than rules given in the OCL specification. It allows one to catch more errors on a type checking phase.

The type theory presented is four-layered: classes, basic types, generic types, errorable types. We introduce the following new types: non-nullable types (T[1]), nullable types (T[?]), OclSuper. OclSuper is a supertype of all other types (basic types, collections, tuples). This type allows us to define a total supremum function, so types form an upper semilattice. It allows us to define rich expression typing rules in an elegant manner.

The Preliminaries Chapter of the theory defines a number of helper lemmas for transitive closures and tuples. It defines also a generic object model independent from OCL. It allows one to use the theory as a reference for formalization of analogous languages.

[QHLProver] title = Quantum Hoare Logic author = Junyi Liu<>, Bohua Zhan , Shuling Wang<>, Shenggang Ying<>, Tao Liu<>, Yangjia Li<>, Mingsheng Ying<>, Naijun Zhan<> topic = Computer science/Programming languages/Logics, Computer science/Semantics date = 2019-03-24 notify = bzhan@ios.ac.cn abstract = We formalize quantum Hoare logic as given in [1]. In particular, we specify the syntax and denotational semantics of a simple model of quantum programs. Then, we write down the rules of quantum Hoare logic for partial correctness, and show the soundness and completeness of the resulting proof system. As an application, we verify the correctness of Grover’s algorithm. [Transcendence_Series_Hancl_Rucki] title = The Transcendence of Certain Infinite Series author = Angeliki Koutsoukou-Argyraki , Wenda Li topic = Mathematics/Analysis, Mathematics/Number theory date = 2019-03-27 notify = wl302@cam.ac.uk, ak2110@cam.ac.uk abstract = We formalize the proofs of two transcendence criteria by J. Hančl and P. Rucki that assert the transcendence of the sums of certain infinite series built up by sequences that fulfil certain properties. Both proofs make use of Roth's celebrated theorem on diophantine approximations to algebraic numbers from 1955 which we implement as an assumption without having formalised its proof. [Binding_Syntax_Theory] title = A General Theory of Syntax with Bindings author = Lorenzo Gheri , Andrei Popescu topic = Computer science/Programming languages/Lambda calculi, Computer science/Functional programming, Logic/General logic/Mechanization of proofs date = 2019-04-06 notify = a.popescu@mdx.ac.uk, lor.gheri@gmail.com abstract = We formalize a theory of syntax with bindings that has been developed and refined over the last decade to support several large formalization efforts. Terms are defined for an arbitrary number of constructors of varying numbers of inputs, quotiented to alpha-equivalence and sorted according to a binding signature. The theory includes many properties of the standard operators on terms: substitution, swapping and freshness. It also includes bindings-aware induction and recursion principles and support for semantic interpretation. This work has been presented in the ITP 2017 paper “A Formalized General Theory of Syntax with Bindings”. [LTL_Master_Theorem] title = A Compositional and Unified Translation of LTL into ω-Automata author = Benedikt Seidl , Salomon Sickert topic = Computer science/Automata and formal languages date = 2019-04-16 notify = benedikt.seidl@tum.de, s.sickert@tum.de abstract = We present a formalisation of the unified translation approach of linear temporal logic (LTL) into ω-automata from [1]. This approach decomposes LTL formulas into ``simple'' languages and allows a clear separation of concerns: first, we formalise the purely logical result yielding this decomposition; second, we instantiate this generic theory to obtain a construction for deterministic (state-based) Rabin automata (DRA). We extract from this particular instantiation an executable tool translating LTL to DRAs. To the best of our knowledge this is the first verified translation from LTL to DRAs that is proven to be double exponential in the worst case which asymptotically matches the known lower bound.

[1] Javier Esparza, Jan Kretínský, Salomon Sickert. One Theorem to Rule Them All: A Unified Translation of LTL into ω-Automata. LICS 2018 [LambdaAuth] title = Formalization of Generic Authenticated Data Structures author = Matthias Brun<>, Dmitriy Traytel topic = Computer science/Security, Computer science/Programming languages/Lambda calculi date = 2019-05-14 notify = traytel@inf.ethz.ch abstract = Authenticated data structures are a technique for outsourcing data storage and maintenance to an untrusted server. The server is required to produce an efficiently checkable and cryptographically secure proof that it carried out precisely the requested computation. Miller et al. introduced λ• (pronounced lambda auth)—a functional programming language with a built-in primitive authentication construct, which supports a wide range of user-specified authenticated data structures while guaranteeing certain correctness and security properties for all well-typed programs. We formalize λ• and prove its correctness and security properties. With Isabelle's help, we uncover and repair several mistakes in the informal proofs and lemma statements. Our findings are summarized in a paper draft. [IMP2_Binary_Heap] title = Binary Heaps for IMP2 author = Simon Griebel<> topic = Computer science/Data structures, Computer science/Algorithms date = 2019-06-13 notify = s.griebel@tum.de abstract = In this submission array-based binary minimum heaps are formalized. The correctness of the following heap operations is proved: insert, get-min, delete-min and make-heap. These are then used to verify an in-place heapsort. The formalization is based on IMP2, an imperative program verification framework implemented in Isabelle/HOL. The verified heap functions are iterative versions of the partly recursive functions found in "Algorithms and Data Structures – The Basic Toolbox" by K. Mehlhorn and P. Sanders and "Introduction to Algorithms" by T. H. Cormen, C. E. Leiserson, R. L. Rivest and C. Stein. [Groebner_Macaulay] title = Gröbner Bases, Macaulay Matrices and Dubé's Degree Bounds author = Alexander Maletzky topic = Mathematics/Algebra date = 2019-06-15 notify = alexander.maletzky@risc.jku.at abstract = This entry formalizes the connection between Gröbner bases and Macaulay matrices (sometimes also referred to as `generalized Sylvester matrices'). In particular, it contains a method for computing Gröbner bases, which proceeds by first constructing some Macaulay matrix of the initial set of polynomials, then row-reducing this matrix, and finally converting the result back into a set of polynomials. The output is shown to be a Gröbner basis if the Macaulay matrix constructed in the first step is sufficiently large. In order to obtain concrete upper bounds on the size of the matrix (and hence turn the method into an effectively executable algorithm), Dubé's degree bounds on Gröbner bases are utilized; consequently, they are also part of the formalization. [Linear_Inequalities] title = Linear Inequalities author = Ralph Bottesch , Alban Reynaud <>, René Thiemann topic = Mathematics/Algebra date = 2019-06-21 notify = rene.thiemann@uibk.ac.at abstract = We formalize results about linear inqualities, mainly from Schrijver's book. The main results are the proof of the fundamental theorem on linear inequalities, Farkas' lemma, Carathéodory's theorem, the Farkas-Minkowsky-Weyl theorem, the decomposition theorem of polyhedra, and Meyer's result that the integer hull of a polyhedron is a polyhedron itself. Several theorems include bounds on the appearing numbers, and in particular we provide an a-priori bound on mixed-integer solutions of linear inequalities. [Linear_Programming] title = Linear Programming author = Julian Parsert , Cezary Kaliszyk topic = Mathematics/Algebra date = 2019-08-06 notify = julian.parsert@gmail.com, cezary.kaliszyk@uibk.ac.at abstract = We use the previous formalization of the general simplex algorithm to formulate an algorithm for solving linear programs. We encode the linear programs using only linear constraints. Solving these constraints also solves the original linear program. This algorithm is proven to be sound by applying the weak duality theorem which is also part of this formalization. [Differential_Game_Logic] title = Differential Game Logic author = André Platzer topic = Computer science/Programming languages/Logics date = 2019-06-03 notify = aplatzer@cs.cmu.edu abstract = This formalization provides differential game logic (dGL), a logic for proving properties of hybrid game. In addition to the syntax and semantics, it formalizes a uniform substitution calculus for dGL. Church's uniform substitutions substitute a term or formula for a function or predicate symbol everywhere. The uniform substitutions for dGL also substitute hybrid games for a game symbol everywhere. We prove soundness of one-pass uniform substitutions and the axioms of differential game logic with respect to their denotational semantics. One-pass uniform substitutions are faster by postponing soundness-critical admissibility checks with a linear pass homomorphic application and regain soundness by a variable condition at the replacements. The formalization is based on prior non-mechanized soundness proofs for dGL. [Complete_Non_Orders] title = Complete Non-Orders and Fixed Points author = Akihisa Yamada , Jérémy Dubut topic = Mathematics/Order date = 2019-06-27 notify = akihisayamada@nii.ac.jp, dubut@nii.ac.jp abstract = We develop an Isabelle/HOL library of order-theoretic concepts, such as various completeness conditions and fixed-point theorems. We keep our formalization as general as possible: we reprove several well-known results about complete orders, often without any properties of ordering, thus complete non-orders. In particular, we generalize the Knaster–Tarski theorem so that we ensure the existence of a quasi-fixed point of monotone maps over complete non-orders, and show that the set of quasi-fixed points is complete under a mild condition—attractivity—which is implied by either antisymmetry or transitivity. This result generalizes and strengthens a result by Stauti and Maaden. Finally, we recover Kleene’s fixed-point theorem for omega-complete non-orders, again using attractivity to prove that Kleene’s fixed points are least quasi-fixed points. [Priority_Search_Trees] title = Priority Search Trees author = Peter Lammich , Tobias Nipkow topic = Computer science/Data structures date = 2019-06-25 notify = lammich@in.tum.de abstract = We present a new, purely functional, simple and efficient data structure combining a search tree and a priority queue, which we call a priority search tree. The salient feature of priority search trees is that they offer a decrease-key operation, something that is missing from other simple, purely functional priority queue implementations. Priority search trees can be implemented on top of any search tree. This entry does the implementation for red-black trees. This entry formalizes the first part of our ITP-2019 proof pearl Purely Functional, Simple and Efficient Priority Search Trees and Applications to Prim and Dijkstra. [Prim_Dijkstra_Simple] title = Purely Functional, Simple, and Efficient Implementation of Prim and Dijkstra author = Peter Lammich , Tobias Nipkow topic = Computer science/Algorithms/Graph date = 2019-06-25 notify = lammich@in.tum.de abstract = We verify purely functional, simple and efficient implementations of Prim's and Dijkstra's algorithms. This constitutes the first verification of an executable and even efficient version of Prim's algorithm. This entry formalizes the second part of our ITP-2019 proof pearl Purely Functional, Simple and Efficient Priority Search Trees and Applications to Prim and Dijkstra. [MFOTL_Monitor] title = Formalization of a Monitoring Algorithm for Metric First-Order Temporal Logic author = Joshua Schneider , Dmitriy Traytel topic = Computer science/Algorithms, Logic/General logic/Temporal logic, Computer science/Automata and formal languages date = 2019-07-04 notify = joshua.schneider@inf.ethz.ch, traytel@inf.ethz.ch abstract = A monitor is a runtime verification tool that solves the following problem: Given a stream of time-stamped events and a policy formulated in a specification language, decide whether the policy is satisfied at every point in the stream. We verify the correctness of an executable monitor for specifications given as formulas in metric first-order temporal logic (MFOTL), an expressive extension of linear temporal logic with real-time constraints and first-order quantification. The verified monitor implements a simplified variant of the algorithm used in the efficient MonPoly monitoring tool. The formalization is presented in a RV 2019 paper, which also compares the output of the verified monitor to that of other monitoring tools on randomly generated inputs. This case study revealed several errors in the optimized but unverified tools. extra-history = Change history: [2020-08-13]: added the formalization of the abstract slicing framework and joint data slicer (revision b1639ed541b7)
[FOL_Seq_Calc1] title = A Sequent Calculus for First-Order Logic author = Asta Halkjær From contributors = Alexander Birch Jensen , Anders Schlichtkrull , Jørgen Villadsen topic = Logic/Proof theory date = 2019-07-18 notify = ahfrom@dtu.dk abstract = This work formalizes soundness and completeness of a one-sided sequent calculus for first-order logic. The completeness is shown via a translation from a complete semantic tableau calculus, the proof of which is based on the First-Order Logic According to Fitting theory. The calculi and proof techniques are taken from Ben-Ari's Mathematical Logic for Computer Science. [Szpilrajn] title = Szpilrajn Extension Theorem author = Peter Zeller topic = Mathematics/Order date = 2019-07-27 notify = p_zeller@cs.uni-kl.de abstract = We formalize the Szpilrajn extension theorem, also known as order-extension principal: Every strict partial order can be extended to a strict linear order. [TESL_Language] title = A Formal Development of a Polychronous Polytimed Coordination Language author = Hai Nguyen Van , Frédéric Boulanger , Burkhart Wolff topic = Computer science/System description languages, Computer science/Semantics, Computer science/Concurrency date = 2019-07-30 notify = frederic.boulanger@centralesupelec.fr, burkhart.wolff@lri.fr abstract = The design of complex systems involves different formalisms for modeling their different parts or aspects. The global model of a system may therefore consist of a coordination of concurrent sub-models that use different paradigms. We develop here a theory for a language used to specify the timed coordination of such heterogeneous subsystems by addressing the following issues:

  • the behavior of the sub-systems is observed only at a series of discrete instants,
  • events may occur in different sub-systems at unrelated times, leading to polychronous systems, which do not necessarily have a common base clock,
  • coordination between subsystems involves causality, so the occurrence of an event may enforce the occurrence of other events, possibly after a certain duration has elapsed or an event has occurred a given number of times,
  • the domain of time (discrete, rational, continuous...) may be different in the subsystems, leading to polytimed systems,
  • the time frames of different sub-systems may be related (for instance, time in a GPS satellite and in a GPS receiver on Earth are related although they are not the same).
Firstly, a denotational semantics of the language is defined. Then, in order to be able to incrementally check the behavior of systems, an operational semantics is given, with proofs of progress, soundness and completeness with regard to the denotational semantics. These proofs are made according to a setup that can scale up when new operators are added to the language. In order for specifications to be composed in a clean way, the language should be invariant by stuttering (i.e., adding observation instants at which nothing happens). The proof of this invariance is also given. [Stellar_Quorums] title = Stellar Quorum Systems author = Giuliano Losa topic = Computer science/Algorithms/Distributed date = 2019-08-01 notify = giuliano@galois.com abstract = We formalize the static properties of personal Byzantine quorum systems (PBQSs) and Stellar quorum systems, as described in the paper ``Stellar Consensus by Reduction'' (to appear at DISC 2019). [IMO2019] title = Selected Problems from the International Mathematical Olympiad 2019 author = Manuel Eberl topic = Mathematics/Misc date = 2019-08-05 notify = eberlm@in.tum.de abstract =

This entry contains formalisations of the answers to three of the six problem of the International Mathematical Olympiad 2019, namely Q1, Q4, and Q5.

The reason why these problems were chosen is that they are particularly amenable to formalisation: they can be solved with minimal use of libraries. The remaining three concern geometry and graph theory, which, in the author's opinion, are more difficult to formalise resp. require a more complex library.

[Adaptive_State_Counting] title = Formalisation of an Adaptive State Counting Algorithm author = Robert Sachtleben topic = Computer science/Automata and formal languages, Computer science/Algorithms date = 2019-08-16 notify = rob_sac@uni-bremen.de abstract = This entry provides a formalisation of a refinement of an adaptive state counting algorithm, used to test for reduction between finite state machines. The algorithm has been originally presented by Hierons in the paper Testing from a Non-Deterministic Finite State Machine Using Adaptive State Counting. Definitions for finite state machines and adaptive test cases are given and many useful theorems are derived from these. The algorithm is formalised using mutually recursive functions, for which it is proven that the generated test suite is sufficient to test for reduction against finite state machines of a certain fault domain. Additionally, the algorithm is specified in a simple WHILE-language and its correctness is shown using Hoare-logic. [Jacobson_Basic_Algebra] title = A Case Study in Basic Algebra author = Clemens Ballarin topic = Mathematics/Algebra date = 2019-08-30 notify = ballarin@in.tum.de abstract = The focus of this case study is re-use in abstract algebra. It contains locale-based formalisations of selected parts of set, group and ring theory from Jacobson's Basic Algebra leading to the respective fundamental homomorphism theorems. The study is not intended as a library base for abstract algebra. It rather explores an approach towards abstract algebra in Isabelle. [Hybrid_Systems_VCs] title = Verification Components for Hybrid Systems author = Jonathan Julian Huerta y Munive <> topic = Mathematics/Algebra, Mathematics/Analysis date = 2019-09-10 notify = jjhuertaymunive1@sheffield.ac.uk, jonjulian23@gmail.com abstract = These components formalise a semantic framework for the deductive verification of hybrid systems. They support reasoning about continuous evolutions of hybrid programs in the style of differential dynamics logic. Vector fields or flows model these evolutions, and their verification is done with invariants for the former or orbits for the latter. Laws of modal Kleene algebra or categorical predicate transformers implement the verification condition generation. Examples show the approach at work. extra-history = Change history: [2020-12-13]: added components based on Kleene algebras with tests. These implement differential Hoare logic (dH) and a Morgan-style differential refinement calculus (dR) for verification of hybrid programs. [Generic_Join] title = Formalization of Multiway-Join Algorithms author = Thibault Dardinier<> topic = Computer science/Algorithms date = 2019-09-16 notify = tdardini@student.ethz.ch, traytel@inf.ethz.ch abstract = Worst-case optimal multiway-join algorithms are recent seminal achievement of the database community. These algorithms compute the natural join of multiple relational databases and improve in the worst case over traditional query plan optimizations of nested binary joins. In 2014, Ngo, Ré, and Rudra gave a unified presentation of different multi-way join algorithms. We formalized and proved correct their "Generic Join" algorithm and extended it to support negative joins. [Aristotles_Assertoric_Syllogistic] title = Aristotle's Assertoric Syllogistic author = Angeliki Koutsoukou-Argyraki topic = Logic/Philosophical aspects date = 2019-10-08 notify = ak2110@cam.ac.uk abstract = We formalise with Isabelle/HOL some basic elements of Aristotle's assertoric syllogistic following the article from the Stanford Encyclopedia of Philosophy by Robin Smith. To this end, we use a set theoretic formulation (covering both individual and general predication). In particular, we formalise the deductions in the Figures and after that we present Aristotle's metatheoretical observation that all deductions in the Figures can in fact be reduced to either Barbara or Celarent. As the formal proofs prove to be straightforward, the interest of this entry lies in illustrating the functionality of Isabelle and high efficiency of Sledgehammer for simple exercises in philosophy. [VerifyThis2019] title = VerifyThis 2019 -- Polished Isabelle Solutions author = Peter Lammich<>, Simon Wimmer topic = Computer science/Algorithms date = 2019-10-16 notify = lammich@in.tum.de, wimmers@in.tum.de abstract = VerifyThis 2019 (http://www.pm.inf.ethz.ch/research/verifythis.html) was a program verification competition associated with ETAPS 2019. It was the 8th event in the VerifyThis competition series. In this entry, we present polished and completed versions of our solutions that we created during the competition. [ZFC_in_HOL] title = Zermelo Fraenkel Set Theory in Higher-Order Logic author = Lawrence C. Paulson topic = Logic/Set theory date = 2019-10-24 notify = lp15@cam.ac.uk abstract =

This entry is a new formalisation of ZFC set theory in Isabelle/HOL. It is logically equivalent to Obua's HOLZF; the point is to have the closest possible integration with the rest of Isabelle/HOL, minimising the amount of new notations and exploiting type classes.

There is a type V of sets and a function elts :: V => V set mapping a set to its elements. Classes simply have type V set, and a predicate identifies the small classes: those that correspond to actual sets. Type classes connected with orders and lattices are used to minimise the amount of new notation for concepts such as the subset relation, union and intersection. Basic concepts — Cartesian products, disjoint sums, natural numbers, functions, etc. — are formalised.

More advanced set-theoretic concepts, such as transfinite induction, ordinals, cardinals and the transitive closure of a set, are also provided. The definition of addition and multiplication for general sets (not just ordinals) follows Kirby.

The theory provides two type classes with the aim of facilitating developments that combine V with other Isabelle/HOL types: embeddable, the class of types that can be injected into V (including V itself as well as V*V, etc.), and small, the class of types that correspond to some ZF set.

extra-history = Change history: [2020-01-28]: Generalisation of the "small" predicate and order types to arbitrary sets; ordinal exponentiation; introduction of the coercion ord_of_nat :: "nat => V"; numerous new lemmas. (revision 6081d5be8d08) [Interval_Arithmetic_Word32] title = Interval Arithmetic on 32-bit Words author = Brandon Bohrer topic = Computer science/Data structures date = 2019-11-27 notify = bjbohrer@gmail.com, bbohrer@cs.cmu.edu abstract = Interval_Arithmetic implements conservative interval arithmetic computations, then uses this interval arithmetic to implement a simple programming language where all terms have 32-bit signed word values, with explicit infinities for terms outside the representable bounds. Our target use case is interpreters for languages that must have a well-understood low-level behavior. We include a formalization of bounded-length strings which are used for the identifiers of our language. Bounded-length identifiers are useful in some applications, for example the Differential_Dynamic_Logic article, where a Euclidean space indexed by identifiers demands that identifiers are finitely many. [Generalized_Counting_Sort] title = An Efficient Generalization of Counting Sort for Large, possibly Infinite Key Ranges author = Pasquale Noce topic = Computer science/Algorithms, Computer science/Functional programming date = 2019-12-04 notify = pasquale.noce.lavoro@gmail.com abstract = Counting sort is a well-known algorithm that sorts objects of any kind mapped to integer keys, or else to keys in one-to-one correspondence with some subset of the integers (e.g. alphabet letters). However, it is suitable for direct use, viz. not just as a subroutine of another sorting algorithm (e.g. radix sort), only if the key range is not significantly larger than the number of the objects to be sorted. This paper describes a tail-recursive generalization of counting sort making use of a bounded number of counters, suitable for direct use in case of a large, or even infinite key range of any kind, subject to the only constraint of being a subset of an arbitrary linear order. After performing a pen-and-paper analysis of how such algorithm has to be designed to maximize its efficiency, this paper formalizes the resulting generalized counting sort (GCsort) algorithm and then formally proves its correctness properties, namely that (a) the counters' number is maximized never exceeding the fixed upper bound, (b) objects are conserved, (c) objects get sorted, and (d) the algorithm is stable. [Poincare_Bendixson] title = The Poincaré-Bendixson Theorem author = Fabian Immler , Yong Kiam Tan topic = Mathematics/Analysis date = 2019-12-18 notify = fimmler@cs.cmu.edu, yongkiat@cs.cmu.edu abstract = The Poincaré-Bendixson theorem is a classical result in the study of (continuous) dynamical systems. Colloquially, it restricts the possible behaviors of planar dynamical systems: such systems cannot be chaotic. In practice, it is a useful tool for proving the existence of (limiting) periodic behavior in planar systems. The theorem is an interesting and challenging benchmark for formalized mathematics because proofs in the literature rely on geometric sketches and only hint at symmetric cases. It also requires a substantial background of mathematical theories, e.g., the Jordan curve theorem, real analysis, ordinary differential equations, and limiting (long-term) behavior of dynamical systems. [Isabelle_C] title = Isabelle/C author = Frédéric Tuong , Burkhart Wolff topic = Computer science/Programming languages/Language definitions, Computer science/Semantics, Tools date = 2019-10-22 notify = tuong@users.gforge.inria.fr, wolff@lri.fr abstract = We present a framework for C code in C11 syntax deeply integrated into the Isabelle/PIDE development environment. Our framework provides an abstract interface for verification back-ends to be plugged-in independently. Thus, various techniques such as deductive program verification or white-box testing can be applied to the same source, which is part of an integrated PIDE document model. Semantic back-ends are free to choose the supported C fragment and its semantics. In particular, they can differ on the chosen memory model or the specification mechanism for framing conditions. Our framework supports semantic annotations of C sources in the form of comments. Annotations serve to locally control back-end settings, and can express the term focus to which an annotation refers. Both the logical and the syntactic context are available when semantic annotations are evaluated. As a consequence, a formula in an annotation can refer both to HOL or C variables. Our approach demonstrates the degree of maturity and expressive power the Isabelle/PIDE sub-system has achieved in recent years. Our integration technique employs Lex and Yacc style grammars to ensure efficient deterministic parsing. This is the core-module of Isabelle/C; the AFP package for Clean and Clean_wrapper as well as AutoCorres and AutoCorres_wrapper (available via git) are applications of this front-end. [Zeta_3_Irrational] title = The Irrationality of ζ(3) author = Manuel Eberl topic = Mathematics/Number theory date = 2019-12-27 notify = manuel.eberl@tum.de abstract =

This article provides a formalisation of Beukers's straightforward analytic proof that ζ(3) is irrational. This was first proven by Apéry (which is why this result is also often called ‘Apéry's Theorem’) using a more algebraic approach. This formalisation follows Filaseta's presentation of Beukers's proof.

[Hybrid_Logic] title = Formalizing a Seligman-Style Tableau System for Hybrid Logic author = Asta Halkjær From topic = Logic/General logic/Modal logic date = 2019-12-20 notify = ahfrom@dtu.dk abstract = This work is a formalization of soundness and completeness proofs for a Seligman-style tableau system for hybrid logic. The completeness result is obtained via a synthetic approach using maximally consistent sets of tableau blocks. The formalization differs from previous work in a few ways. First, to avoid the need to backtrack in the construction of a tableau, the formalized system has no unnamed initial segment, and therefore no Name rule. Second, I show that the full Bridge rule is admissible in the system. Third, I start from rules restricted to only extend the branch with new formulas, including only witnessing diamonds that are not already witnessed, and show that the unrestricted rules are admissible. Similarly, I start from simpler versions of the @-rules and show that these are sufficient. The GoTo rule is restricted using a notion of potential such that each application consumes potential and potential is earned through applications of the remaining rules. I show that if a branch can be closed then it can be closed starting from a single unit. Finally, Nom is restricted by a fixed set of allowed nominals. The resulting system should be terminating. extra-history = Change history: [2020-06-03]: The fully restricted system has been shown complete by updating the synthetic completeness proof. [Bicategory] title = Bicategories author = Eugene W. Stark topic = Mathematics/Category theory date = 2020-01-06 notify = stark@cs.stonybrook.edu abstract =

Taking as a starting point the author's previous work on developing aspects of category theory in Isabelle/HOL, this article gives a compatible formalization of the notion of "bicategory" and develops a framework within which formal proofs of facts about bicategories can be given. The framework includes a number of basic results, including the Coherence Theorem, the Strictness Theorem, pseudofunctors and biequivalence, and facts about internal equivalences and adjunctions in a bicategory. As a driving application and demonstration of the utility of the framework, it is used to give a formal proof of a theorem, due to Carboni, Kasangian, and Street, that characterizes up to biequivalence the bicategories of spans in a category with pullbacks. The formalization effort necessitated the filling-in of many details that were not evident from the brief presentation in the original paper, as well as identifying a few minor corrections along the way.

Revisions made subsequent to the first version of this article added additional material on pseudofunctors, pseudonatural transformations, modifications, and equivalence of bicategories; the main thrust being to give a proof that a pseudofunctor is a biequivalence if and only if it can be extended to an equivalence of bicategories.

extra-history = Change history: [2020-02-15]: Move ConcreteCategory.thy from Bicategory to Category3 and use it systematically. Make other minor improvements throughout. (revision a51840d36867)
[2020-11-04]: Added new material on equivalence of bicategories, with associated changes. (revision 472cb2268826)
[Subset_Boolean_Algebras] title = A Hierarchy of Algebras for Boolean Subsets author = Walter Guttmann , Bernhard Möller topic = Mathematics/Algebra date = 2020-01-31 notify = walter.guttmann@canterbury.ac.nz abstract = We present a collection of axiom systems for the construction of Boolean subalgebras of larger overall algebras. The subalgebras are defined as the range of a complement-like operation on a semilattice. This technique has been used, for example, with the antidomain operation, dynamic negation and Stone algebras. We present a common ground for these constructions based on a new equational axiomatisation of Boolean algebras. [Goodstein_Lambda] title = Implementing the Goodstein Function in λ-Calculus author = Bertram Felgenhauer topic = Logic/Rewriting date = 2020-02-21 notify = int-e@gmx.de abstract = In this formalization, we develop an implementation of the Goodstein function G in plain λ-calculus, linked to a concise, self-contained specification. The implementation works on a Church-encoded representation of countable ordinals. The initial conversion to hereditary base 2 is not covered, but the material is sufficient to compute the particular value G(16), and easily extends to other fixed arguments. [VeriComp] title = A Generic Framework for Verified Compilers author = Martin Desharnais topic = Computer science/Programming languages/Compiling date = 2020-02-10 notify = martin.desharnais@unibw.de abstract = This is a generic framework for formalizing compiler transformations. It leverages Isabelle/HOL’s locales to abstract over concrete languages and transformations. It states common definitions for language semantics, program behaviours, forward and backward simulations, and compilers. We provide generic operations, such as simulation and compiler composition, and prove general (partial) correctness theorems, resulting in reusable proof components. [Hello_World] title = Hello World author = Cornelius Diekmann , Lars Hupel topic = Computer science/Functional programming date = 2020-03-07 notify = diekmann@net.in.tum.de abstract = In this article, we present a formalization of the well-known "Hello, World!" code, including a formal framework for reasoning about IO. Our model is inspired by the handling of IO in Haskell. We start by formalizing the 🌍 and embrace the IO monad afterwards. Then we present a sample main :: IO (), followed by its proof of correctness. [WOOT_Strong_Eventual_Consistency] title = Strong Eventual Consistency of the Collaborative Editing Framework WOOT author = Emin Karayel , Edgar Gonzàlez topic = Computer science/Algorithms/Distributed date = 2020-03-25 notify = eminkarayel@google.com, edgargip@google.com, me@eminkarayel.de abstract = Commutative Replicated Data Types (CRDTs) are a promising new class of data structures for large-scale shared mutable content in applications that only require eventual consistency. The WithOut Operational Transforms (WOOT) framework is a CRDT for collaborative text editing introduced by Oster et al. (CSCW 2006) for which the eventual consistency property was verified only for a bounded model to date. We contribute a formal proof for WOOTs strong eventual consistency. [Furstenberg_Topology] title = Furstenberg's topology and his proof of the infinitude of primes author = Manuel Eberl topic = Mathematics/Number theory date = 2020-03-22 notify = manuel.eberl@tum.de abstract =

This article gives a formal version of Furstenberg's topological proof of the infinitude of primes. He defines a topology on the integers based on arithmetic progressions (or, equivalently, residue classes). Using some fairly obvious properties of this topology, the infinitude of primes is then easily obtained.

Apart from this, this topology is also fairly ‘nice’ in general: it is second countable, metrizable, and perfect. All of these (well-known) facts are formally proven, including an explicit metric for the topology given by Zulfeqarr.

[Saturation_Framework] title = A Comprehensive Framework for Saturation Theorem Proving author = Sophie Tourret topic = Logic/General logic/Mechanization of proofs date = 2020-04-09 notify = stourret@mpi-inf.mpg.de abstract = This Isabelle/HOL formalization is the companion of the technical report “A comprehensive framework for saturation theorem proving”, itself companion of the eponym IJCAR 2020 paper, written by Uwe Waldmann, Sophie Tourret, Simon Robillard and Jasmin Blanchette. It verifies a framework for formal refutational completeness proofs of abstract provers that implement saturation calculi, such as ordered resolution or superposition, and allows to model entire prover architectures in such a way that the static refutational completeness of a calculus immediately implies the dynamic refutational completeness of a prover implementing the calculus using a variant of the given clause loop. The technical report “A comprehensive framework for saturation theorem proving” is available on the Matryoshka website. The names of the Isabelle lemmas and theorems corresponding to the results in the report are indicated in the margin of the report. [Saturation_Framework_Extensions] title = Extensions to the Comprehensive Framework for Saturation Theorem Proving author = Jasmin Blanchette , Sophie Tourret topic = Logic/General logic/Mechanization of proofs date = 2020-08-25 notify = jasmin.blanchette@gmail.com abstract = This Isabelle/HOL formalization extends the AFP entry Saturation_Framework with the following contributions:
  • an application of the framework to prove Bachmair and Ganzinger's resolution prover RP refutationally complete, which was formalized in a more ad hoc fashion by Schlichtkrull et al. in the AFP entry Ordered_Resultion_Prover;
  • generalizations of various basic concepts formalized by Schlichtkrull et al., which were needed to verify RP and could be useful to formalize other calculi, such as superposition;
  • alternative proofs of fairness (and hence saturation and ultimately refutational completeness) for the given clause procedures GC and LGC, based on invariance.
[MFODL_Monitor_Optimized] title = Formalization of an Optimized Monitoring Algorithm for Metric First-Order Dynamic Logic with Aggregations author = Thibault Dardinier<>, Lukas Heimes<>, Martin Raszyk , Joshua Schneider , Dmitriy Traytel topic = Computer science/Algorithms, Logic/General logic/Modal logic, Computer science/Automata and formal languages date = 2020-04-09 notify = martin.raszyk@inf.ethz.ch, joshua.schneider@inf.ethz.ch, traytel@inf.ethz.ch abstract = A monitor is a runtime verification tool that solves the following problem: Given a stream of time-stamped events and a policy formulated in a specification language, decide whether the policy is satisfied at every point in the stream. We verify the correctness of an executable monitor for specifications given as formulas in metric first-order dynamic logic (MFODL), which combines the features of metric first-order temporal logic (MFOTL) and metric dynamic logic. Thus, MFODL supports real-time constraints, first-order parameters, and regular expressions. Additionally, the monitor supports aggregation operations such as count and sum. This formalization, which is described in a forthcoming paper at IJCAR 2020, significantly extends previous work on a verified monitor for MFOTL. Apart from the addition of regular expressions and aggregations, we implemented multi-way joins and a specialized sliding window algorithm to further optimize the monitor. [Sliding_Window_Algorithm] title = Formalization of an Algorithm for Greedily Computing Associative Aggregations on Sliding Windows author = Lukas Heimes<>, Dmitriy Traytel , Joshua Schneider<> topic = Computer science/Algorithms date = 2020-04-10 notify = heimesl@student.ethz.ch, traytel@inf.ethz.ch, joshua.schneider@inf.ethz.ch abstract = Basin et al.'s sliding window algorithm (SWA) is an algorithm for combining the elements of subsequences of a sequence with an associative operator. It is greedy and minimizes the number of operator applications. We formalize the algorithm and verify its functional correctness. We extend the algorithm with additional operations and provide an alternative interface to the slide operation that does not require the entire input sequence. [Lucas_Theorem] title = Lucas's Theorem author = Chelsea Edmonds topic = Mathematics/Number theory date = 2020-04-07 notify = cle47@cam.ac.uk abstract = This work presents a formalisation of a generating function proof for Lucas's theorem. We first outline extensions to the existing Formal Power Series (FPS) library, including an equivalence relation for coefficients modulo n, an alternate binomial theorem statement, and a formalised proof of the Freshman's dream (mod p) lemma. The second part of the work presents the formal proof of Lucas's Theorem. Working backwards, the formalisation first proves a well known corollary of the theorem which is easier to formalise, and then applies induction to prove the original theorem statement. The proof of the corollary aims to provide a good example of a formalised generating function equivalence proof using the FPS library. The final theorem statement is intended to be integrated into the formalised proof of Hilbert's 10th Problem. [ADS_Functor] title = Authenticated Data Structures As Functors author = Andreas Lochbihler , Ognjen Marić topic = Computer science/Data structures date = 2020-04-16 notify = andreas.lochbihler@digitalasset.com, mail@andreas-lochbihler.de abstract = Authenticated data structures allow several systems to convince each other that they are referring to the same data structure, even if each of them knows only a part of the data structure. Using inclusion proofs, knowledgeable systems can selectively share their knowledge with other systems and the latter can verify the authenticity of what is being shared. In this article, we show how to modularly define authenticated data structures, their inclusion proofs, and operations thereon as datatypes in Isabelle/HOL, using a shallow embedding. Modularity allows us to construct complicated trees from reusable building blocks, which we call Merkle functors. Merkle functors include sums, products, and function spaces and are closed under composition and least fixpoints. As a practical application, we model the hierarchical transactions of Canton, a practical interoperability protocol for distributed ledgers, as authenticated data structures. This is a first step towards formalizing the Canton protocol and verifying its integrity and security guarantees. [Power_Sum_Polynomials] title = Power Sum Polynomials author = Manuel Eberl topic = Mathematics/Algebra date = 2020-04-24 notify = eberlm@in.tum.de abstract =

This article provides a formalisation of the symmetric multivariate polynomials known as power sum polynomials. These are of the form pn(X1,…, Xk) = X1n + … + Xkn. A formal proof of the Girard–Newton Theorem is also given. This theorem relates the power sum polynomials to the elementary symmetric polynomials sk in the form of a recurrence relation (-1)k k sk = ∑i∈[0,k) (-1)i si pk-i .

As an application, this is then used to solve a generalised form of a puzzle given as an exercise in Dummit and Foote's Abstract Algebra: For k complex unknowns x1, …, xk, define pj := x1j + … + xkj. Then for each vector a ∈ ℂk, show that there is exactly one solution to the system p1 = a1, …, pk = ak up to permutation of the xi and determine the value of pi for i>k.

[Gaussian_Integers] title = Gaussian Integers author = Manuel Eberl topic = Mathematics/Number theory date = 2020-04-24 notify = eberlm@in.tum.de abstract =

The Gaussian integers are the subring ℤ[i] of the complex numbers, i. e. the ring of all complex numbers with integral real and imaginary part. This article provides a definition of this ring as well as proofs of various basic properties, such as that they form a Euclidean ring and a full classification of their primes. An executable (albeit not very efficient) factorisation algorithm is also provided.

Lastly, this Gaussian integer formalisation is used in two short applications:

  1. The characterisation of all positive integers that can be written as sums of two squares
  2. Euclid's formula for primitive Pythagorean triples

While elementary proofs for both of these are already available in the AFP, the theory of Gaussian integers provides more concise proofs and a more high-level view.

[Forcing] title = Formalization of Forcing in Isabelle/ZF author = Emmanuel Gunther , Miguel Pagano , Pedro Sánchez Terraf topic = Logic/Set theory date = 2020-05-06 notify = gunther@famaf.unc.edu.ar, pagano@famaf.unc.edu.ar, sterraf@famaf.unc.edu.ar abstract = We formalize the theory of forcing in the set theory framework of Isabelle/ZF. Under the assumption of the existence of a countable transitive model of ZFC, we construct a proper generic extension and show that the latter also satisfies ZFC. +[Delta_System_Lemma] +title = Cofinality and the Delta System Lemma +author = Pedro Sánchez Terraf +topic = Mathematics/Combinatorics, Logic/Set theory +date = 2020-12-27 +notify = sterraf@famaf.unc.edu.ar +abstract = + We formalize the basic results on cofinality of linearly ordered sets + and ordinals and Šanin’s Lemma for uncountable families of finite + sets. This last result is used to prove the countable chain condition + for Cohen posets. We work in the set theory framework of Isabelle/ZF, + using the Axiom of Choice as needed. + [Recursion-Addition] title = Recursion Theorem in ZF author = Georgy Dunaev topic = Logic/Set theory date = 2020-05-11 notify = georgedunaev@gmail.com abstract = This document contains a proof of the recursion theorem. This is a mechanization of the proof of the recursion theorem from the text Introduction to Set Theory, by Karel Hrbacek and Thomas Jech. This implementation may be used as the basis for a model of Peano arithmetic in ZF. While recursion and the natural numbers are already available in Isabelle/ZF, this clean development is much easier to follow. [LTL_Normal_Form] title = An Efficient Normalisation Procedure for Linear Temporal Logic: Isabelle/HOL Formalisation author = Salomon Sickert topic = Computer science/Automata and formal languages, Logic/General logic/Temporal logic date = 2020-05-08 notify = s.sickert@tum.de abstract = In the mid 80s, Lichtenstein, Pnueli, and Zuck proved a classical theorem stating that every formula of Past LTL (the extension of LTL with past operators) is equivalent to a formula of the form $\bigwedge_{i=1}^n \mathbf{G}\mathbf{F} \varphi_i \vee \mathbf{F}\mathbf{G} \psi_i$, where $\varphi_i$ and $\psi_i$ contain only past operators. Some years later, Chang, Manna, and Pnueli built on this result to derive a similar normal form for LTL. Both normalisation procedures have a non-elementary worst-case blow-up, and follow an involved path from formulas to counter-free automata to star-free regular expressions and back to formulas. We improve on both points. We present an executable formalisation of a direct and purely syntactic normalisation procedure for LTL yielding a normal form, comparable to the one by Chang, Manna, and Pnueli, that has only a single exponential blow-up. [Matrices_for_ODEs] title = Matrices for ODEs author = Jonathan Julian Huerta y Munive topic = Mathematics/Analysis, Mathematics/Algebra date = 2020-04-19 notify = jonjulian23@gmail.com abstract = Our theories formalise various matrix properties that serve to establish existence, uniqueness and characterisation of the solution to affine systems of ordinary differential equations (ODEs). In particular, we formalise the operator and maximum norm of matrices. Then we use them to prove that square matrices form a Banach space, and in this setting, we show an instance of Picard-Lindelöf’s theorem for affine systems of ODEs. Finally, we use this formalisation to verify three simple hybrid programs. [Irrational_Series_Erdos_Straus] title = Irrationality Criteria for Series by Erdős and Straus author = Angeliki Koutsoukou-Argyraki , Wenda Li topic = Mathematics/Number theory, Mathematics/Analysis date = 2020-05-12 notify = ak2110@cam.ac.uk, wl302@cam.ac.uk, liwenda1990@hotmail.com abstract = We formalise certain irrationality criteria for infinite series of the form: \[\sum_{n=1}^\infty \frac{b_n}{\prod_{i=1}^n a_i} \] where $\{b_n\}$ is a sequence of integers and $\{a_n\}$ a sequence of positive integers with $a_n >1$ for all large n. The results are due to P. Erdős and E. G. Straus [1]. In particular, we formalise Theorem 2.1, Corollary 2.10 and Theorem 3.1. The latter is an application of Theorem 2.1 involving the prime numbers. [Knuth_Bendix_Order] title = A Formalization of Knuth–Bendix Orders author = Christian Sternagel , René Thiemann topic = Logic/Rewriting date = 2020-05-13 notify = c.sternagel@gmail.com, rene.thiemann@uibk.ac.at abstract = We define a generalized version of Knuth–Bendix orders, including subterm coefficient functions. For these orders we formalize several properties such as strong normalization, the subterm property, closure properties under substitutions and contexts, as well as ground totality. [Stateful_Protocol_Composition_and_Typing] title = Stateful Protocol Composition and Typing author = Andreas V. Hess , Sebastian Mödersheim , Achim D. Brucker topic = Computer science/Security date = 2020-04-08 notify = avhe@dtu.dk, andreasvhess@gmail.com, samo@dtu.dk, brucker@spamfence.net, andschl@dtu.dk abstract = We provide in this AFP entry several relative soundness results for security protocols. In particular, we prove typing and compositionality results for stateful protocols (i.e., protocols with mutable state that may span several sessions), and that focuses on reachability properties. Such results are useful to simplify protocol verification by reducing it to a simpler problem: Typing results give conditions under which it is safe to verify a protocol in a typed model where only "well-typed" attacks can occur whereas compositionality results allow us to verify a composed protocol by only verifying the component protocols in isolation. The conditions on the protocols under which the results hold are furthermore syntactic in nature allowing for full automation. The foundation presented here is used in another entry to provide fully automated and formalized security proofs of stateful protocols. [Automated_Stateful_Protocol_Verification] title = Automated Stateful Protocol Verification author = Andreas V. Hess , Sebastian Mödersheim , Achim D. Brucker , Anders Schlichtkrull topic = Computer science/Security, Tools date = 2020-04-08 notify = avhe@dtu.dk, andreasvhess@gmail.com, samo@dtu.dk, brucker@spamfence.net, andschl@dtu.dk abstract = In protocol verification we observe a wide spectrum from fully automated methods to interactive theorem proving with proof assistants like Isabelle/HOL. In this AFP entry, we present a fully-automated approach for verifying stateful security protocols, i.e., protocols with mutable state that may span several sessions. The approach supports reachability goals like secrecy and authentication. We also include a simple user-friendly transaction-based protocol specification language that is embedded into Isabelle. [Smith_Normal_Form] title = A verified algorithm for computing the Smith normal form of a matrix author = Jose Divasón topic = Mathematics/Algebra, Computer science/Algorithms/Mathematical date = 2020-05-23 notify = jose.divason@unirioja.es abstract = This work presents a formal proof in Isabelle/HOL of an algorithm to transform a matrix into its Smith normal form, a canonical matrix form, in a general setting: the algorithm is parameterized by operations to prove its existence over elementary divisor rings, while execution is guaranteed over Euclidean domains. We also provide a formal proof on some results about the generality of this algorithm as well as the uniqueness of the Smith normal form. Since Isabelle/HOL does not feature dependent types, the development is carried out switching conveniently between two different existing libraries: the Hermite normal form (based on HOL Analysis) and the Jordan normal form AFP entries. This permits to reuse results from both developments and it is done by means of the lifting and transfer package together with the use of local type definitions. [Nash_Williams] title = The Nash-Williams Partition Theorem author = Lawrence C. Paulson topic = Mathematics/Combinatorics date = 2020-05-16 notify = lp15@cam.ac.uk abstract = In 1965, Nash-Williams discovered a generalisation of the infinite form of Ramsey's theorem. Where the latter concerns infinite sets of n-element sets for some fixed n, the Nash-Williams theorem concerns infinite sets of finite sets (or lists) subject to a “no initial segment” condition. The present formalisation follows a monograph on Ramsey Spaces by Todorčević. [Safe_Distance] title = A Formally Verified Checker of the Safe Distance Traffic Rules for Autonomous Vehicles author = Albert Rizaldi , Fabian Immler topic = Computer science/Algorithms/Mathematical, Mathematics/Physics date = 2020-06-01 notify = albert.rizaldi@ntu.edu.sg, fimmler@andrew.cmu.edu, martin.rau@tum.de abstract = The Vienna Convention on Road Traffic defines the safe distance traffic rules informally. This could make autonomous vehicle liable for safe-distance-related accidents because there is no clear definition of how large a safe distance is. We provide a formally proven prescriptive definition of a safe distance, and checkers which can decide whether an autonomous vehicle is obeying the safe distance rule. Not only does our work apply to the domain of law, but it also serves as a specification for autonomous vehicle manufacturers and for online verification of path planners. [Relational_Paths] title = Relational Characterisations of Paths author = Walter Guttmann , Peter Höfner topic = Mathematics/Graph theory date = 2020-07-13 notify = walter.guttmann@canterbury.ac.nz, peter@hoefner-online.de abstract = Binary relations are one of the standard ways to encode, characterise and reason about graphs. Relation algebras provide equational axioms for a large fragment of the calculus of binary relations. Although relations are standard tools in many areas of mathematics and computing, researchers usually fall back to point-wise reasoning when it comes to arguments about paths in a graph. We present a purely algebraic way to specify different kinds of paths in Kleene relation algebras, which are relation algebras equipped with an operation for reflexive transitive closure. We study the relationship between paths with a designated root vertex and paths without such a vertex. Since we stay in first-order logic this development helps with mechanising proofs. To demonstrate the applicability of the algebraic framework we verify the correctness of three basic graph algorithms. [Amicable_Numbers] title = Amicable Numbers author = Angeliki Koutsoukou-Argyraki topic = Mathematics/Number theory date = 2020-08-04 notify = ak2110@cam.ac.uk abstract = This is a formalisation of Amicable Numbers, involving some relevant material including Euler's sigma function, some relevant definitions, results and examples as well as rules such as Thābit ibn Qurra's Rule, Euler's Rule, te Riele's Rule and Borho's Rule with breeders. [Ordinal_Partitions] title = Ordinal Partitions author = Lawrence C. Paulson topic = Mathematics/Combinatorics, Logic/Set theory date = 2020-08-03 notify = lp15@cam.ac.uk abstract = The theory of partition relations concerns generalisations of Ramsey's theorem. For any ordinal $\alpha$, write $\alpha \to (\alpha, m)^2$ if for each function $f$ from unordered pairs of elements of $\alpha$ into $\{0,1\}$, either there is a subset $X\subseteq \alpha$ order-isomorphic to $\alpha$ such that $f\{x,y\}=0$ for all $\{x,y\}\subseteq X$, or there is an $m$ element set $Y\subseteq \alpha$ such that $f\{x,y\}=1$ for all $\{x,y\}\subseteq Y$. (In both cases, with $\{x,y\}$ we require $x\not=y$.) In particular, the infinite Ramsey theorem can be written in this notation as $\omega \to (\omega, \omega)^2$, or if we restrict $m$ to the positive integers as above, then $\omega \to (\omega, m)^2$ for all $m$. This entry formalises Larson's proof of $\omega^\omega \to (\omega^\omega, m)^2$ along with a similar proof of a result due to Specker: $\omega^2 \to (\omega^2, m)^2$. Also proved is a necessary result by Erdős and Milner: $\omega^{1+\alpha\cdot n} \to (\omega^{1+\alpha}, 2^n)^2$. [Relational_Disjoint_Set_Forests] title = Relational Disjoint-Set Forests author = Walter Guttmann topic = Computer science/Data structures date = 2020-08-26 notify = walter.guttmann@canterbury.ac.nz abstract = We give a simple relation-algebraic semantics of read and write operations on associative arrays. The array operations seamlessly integrate with assignments in the Hoare-logic library. Using relation algebras and Kleene algebras we verify the correctness of an array-based implementation of disjoint-set forests with a naive union operation and a find operation with path compression. [PAC_Checker] title = Practical Algebraic Calculus Checker author = Mathias Fleury , Daniela Kaufmann topic = Computer science/Algorithms date = 2020-08-31 notify = mathias.fleury@jku.at abstract = Generating and checking proof certificates is important to increase the trust in automated reasoning tools. In recent years formal verification using computer algebra became more important and is heavily used in automated circuit verification. An existing proof format which covers algebraic reasoning and allows efficient proof checking is the practical algebraic calculus (PAC). In this development, we present the verified checker Pastèque that is obtained by synthesis via the Refinement Framework. This is the formalization going with our FMCAD'20 tool presentation. [BirdKMP] title = Putting the `K' into Bird's derivation of Knuth-Morris-Pratt string matching author = Peter Gammie topic = Computer science/Functional programming date = 2020-08-25 notify = peteg42@gmail.com abstract = Richard Bird and collaborators have proposed a derivation of an intricate cyclic program that implements the Morris-Pratt string matching algorithm. Here we provide a proof of total correctness for Bird's derivation and complete it by adding Knuth's optimisation. [Extended_Finite_State_Machines] title = A Formal Model of Extended Finite State Machines author = Michael Foster , Achim D. Brucker , Ramsay G. Taylor , John Derrick topic = Computer science/Automata and formal languages date = 2020-09-07 notify = jmafoster1@sheffield.ac.uk, adbrucker@0x5f.org abstract = In this AFP entry, we provide a formalisation of extended finite state machines (EFSMs) where models are represented as finite sets of transitions between states. EFSMs execute traces to produce observable outputs. We also define various simulation and equality metrics for EFSMs in terms of traces and prove their strengths in relation to each other. Another key contribution is a framework of function definitions such that LTL properties can be phrased over EFSMs. Finally, we provide a simple example case study in the form of a drinks machine. [Extended_Finite_State_Machine_Inference] title = Inference of Extended Finite State Machines author = Michael Foster , Achim D. Brucker , Ramsay G. Taylor , John Derrick topic = Computer science/Automata and formal languages date = 2020-09-07 notify = jmafoster1@sheffield.ac.uk, adbrucker@0x5f.org abstract = In this AFP entry, we provide a formal implementation of a state-merging technique to infer extended finite state machines (EFSMs), complete with output and update functions, from black-box traces. In particular, we define the subsumption in context relation as a means of determining whether one transition is able to account for the behaviour of another. Building on this, we define the direct subsumption relation, which lifts the subsumption in context relation to EFSM level such that we can use it to determine whether it is safe to merge a given pair of transitions. Key proofs include the conditions necessary for subsumption to occur and that subsumption and direct subsumption are preorder relations. We also provide a number of different heuristics which can be used to abstract away concrete values into registers so that more states and transitions can be merged and provide proofs of the various conditions which must hold for these abstractions to subsume their ungeneralised counterparts. A Code Generator setup to create executable Scala code is also defined. [Physical_Quantities] title = A Sound Type System for Physical Quantities, Units, and Measurements author = Simon Foster , Burkhart Wolff topic = Mathematics/Physics, Computer science/Programming languages/Type systems date = 2020-10-20 notify = simon.foster@york.ac.uk, wolff@lri.fr abstract = The present Isabelle theory builds a formal model for both the International System of Quantities (ISQ) and the International System of Units (SI), which are both fundamental for physics and engineering. Both the ISQ and the SI are deeply integrated into Isabelle's type system. Quantities are parameterised by dimension types, which correspond to base vectors, and thus only quantities of the same dimension can be equated. Since the underlying "algebra of quantities" induces congruences on quantity and SI types, specific tactic support is developed to capture these. Our construction is validated by a test-set of known equivalences between both quantities and SI units. Moreover, the presented theory can be used for type-safe conversions between the SI system and others, like the British Imperial System (BIS). [Shadow_DOM] title = A Formal Model of the Document Object Model with Shadow Roots author = Achim D. Brucker , Michael Herzberg topic = Computer science/Data structures date = 2020-09-28 notify = adbrucker@0x5f.org, mail@michael-herzberg.de abstract = In this AFP entry, we extend our formalization of the core DOM with Shadow Roots. Shadow roots are a recent proposal of the web community to support a component-based development approach for client-side web applications. Shadow roots are a significant extension to the DOM standard and, as web standards are condemned to be backward compatible, such extensions often result in complex specification that may contain unwanted subtleties that can be detected by a formalization. Our Isabelle/HOL formalization is, in the sense of object-orientation, an extension of our formalization of the core DOM and enjoys the same basic properties, i.e., it is extensible, i.e., can be extended without the need of re-proving already proven properties and executable, i.e., we can generate executable code from our specification. We exploit the executability to show that our formalization complies to the official standard of the W3C, respectively, the WHATWG. [DOM_Components] title = A Formalization of Web Components author = Achim D. Brucker , Michael Herzberg topic = Computer science/Data structures date = 2020-09-28 notify = adbrucker@0x5f.org, mail@michael-herzberg.de abstract = While the DOM with shadow trees provide the technical basis for defining web components, the DOM standard neither defines the concept of web components nor specifies the safety properties that web components should guarantee. Consequently, the standard also does not discuss how or even if the methods for modifying the DOM respect component boundaries. In AFP entry, we present a formally verified model of web components and define safety properties which ensure that different web components can only interact with each other using well-defined interfaces. Moreover, our verification of the application programming interface (API) of the DOM revealed numerous invariants that implementations of the DOM API need to preserve to ensure the integrity of components. [Interpreter_Optimizations] title = Inline Caching and Unboxing Optimization for Interpreters author = Martin Desharnais topic = Computer science/Programming languages/Misc date = 2020-12-07 notify = martin.desharnais@unibw.de abstract = This Isabelle/HOL formalization builds on the VeriComp entry of the Archive of Formal Proofs to provide the following contributions:
  • an operational semantics for a realistic virtual machine (Std) for dynamically typed programming languages;
  • the formalization of an inline caching optimization (Inca), a proof of bisimulation with (Std), and a compilation function;
  • the formalization of an unboxing optimization (Ubx), a proof of bisimulation with (Inca), and a simple compilation function.
This formalization was described in the CPP 2021 paper Towards Efficient and Verified Virtual Machines for Dynamic Languages [Isabelle_Marries_Dirac] title = Isabelle Marries Dirac: a Library for Quantum Computation and Quantum Information author = Anthony Bordg , Hanna Lachnitt, Yijun He topic = Computer science/Algorithms/Quantum computing, Mathematics/Physics/Quantum information date = 2020-11-22 notify = apdb3@cam.ac.uk, lachnitt@stanford.edu abstract = This work is an effort to formalise some quantum algorithms and results in quantum information theory. Formal methods being critical for the safety and security of algorithms and protocols, we foresee their widespread use for quantum computing in the future. We have developed a large library for quantum computing in Isabelle based on a matrix representation for quantum circuits, successfully formalising the no-cloning theorem, quantum teleportation, Deutsch's algorithm, the Deutsch-Jozsa algorithm and the quantum Prisoner's Dilemma. [Finite-Map-Extras] title = Finite Map Extras author = Javier Díaz topic = Computer science/Data structures date = 2020-10-12 notify = javier.diaz.manzi@gmail.com abstract = This entry includes useful syntactic sugar, new operators and functions, and their associated lemmas for finite maps which currently are not present in the standard Finite_Map theory. [Relational_Minimum_Spanning_Trees] title = Relational Minimum Spanning Tree Algorithms author = Walter Guttmann , Nicolas Robinson-O'Brien<> topic = Computer science/Algorithms/Graph date = 2020-12-08 notify = walter.guttmann@canterbury.ac.nz abstract = We verify the correctness of Prim's, Kruskal's and Borůvka's minimum spanning tree algorithms based on algebras for aggregation and minimisation. + +[Topological_Semantics] +title = Topological semantics for paraconsistent and paracomplete logics +author = David Fuenmayor +topic = Logic/General logic +date = 2020-12-17 +notify = davfuenmayor@gmail.com +abstract = + We introduce a generalized topological semantics for paraconsistent + and paracomplete logics by drawing upon early works on topological + Boolean algebras (cf. works by Kuratowski, Zarycki, McKinsey & + Tarski, etc.). In particular, this work exemplarily illustrates the + shallow semantical embeddings approach (SSE) + employing the proof assistant Isabelle/HOL. By means of the SSE + technique we can effectively harness theorem provers, model finders + and 'hammers' for reasoning with quantified non-classical + logics. + +[CSP_RefTK] +title = The HOL-CSP Refinement Toolkit +author = Safouan Taha , Burkhart Wolff , Lina Ye +topic = Computer science/Concurrency/Process calculi, Computer science/Semantics +date = 2020-11-19 +notify = wolff@lri.fr +abstract = + We use a formal development for CSP, called HOL-CSP2.0, to analyse a + family of refinement notions, comprising classic and new ones. This + analysis enables to derive a number of properties that allow to deepen + the understanding of these notions, in particular with respect to + specification decomposition principles for the case of infinite sets + of events. The established relations between the refinement relations + help to clarify some obscure points in the CSP literature, but also + provide a weapon for shorter refinement proofs. Furthermore, we + provide a framework for state-normalisation allowing to formally + reason on parameterised process architectures. As a result, we have a + modern environment for formal proofs of concurrent systems that allow + for the combination of general infinite processes with locally finite + ones in a logically safe way. We demonstrate these + verification-techniques for classical, generalised examples: The + CopyBuffer for arbitrary data and the Dijkstra's Dining + Philosopher Problem of arbitrary size. + diff --git a/thys/CSP_RefTK/Assertions_ext.thy b/thys/CSP_RefTK/Assertions_ext.thy new file mode 100644 --- /dev/null +++ b/thys/CSP_RefTK/Assertions_ext.thy @@ -0,0 +1,818 @@ +(*<*) +\\ ******************************************************************** + * Project : CSP-RefTK - A Refinement Toolkit for HOL-CSP + * Version : 1.0 + * + * Author : Burkhart Wolff, Safouan Taha, Lina Ye. + * + * This file : Assertions on DF and LF and their Relations + * + * Copyright (c) 2020 Université Paris-Saclay, France + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * * Neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************\ +(*>*) + +chapter\Basic CSP\_RefTk-Theories\ + +theory Assertions_ext + imports "HOL-CSP.Assertions" +begin + +section \Preliminaries\ + +lemma DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold : "DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A = ((\ z \ A \ DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A) \ SKIP)" + by(simp add: DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_def, rule trans, rule fix_eq, simp) + +section \All refinements definitions\ + +thm failure_divergence_refine_def[simplified le_ref_def] trace_refine_def failure_refine_def + +definition divergence_refine :: "'a process \ 'a process \ bool" (infix "\\<^sub>D" 60) + where "P \\<^sub>D Q \ D Q \ D P" + +definition trace_divergence_refine :: "'a process \ 'a process \ bool" (infix "\\<^sub>D\<^sub>T" 60) + where "P \\<^sub>D\<^sub>T Q \ P \\<^sub>T Q \ P \\<^sub>D Q" + +section \Relations between refinements\ + +lemma le_F_T: "P \\<^sub>F Q \ P \\<^sub>T Q" + by (simp add: F_subset_imp_T_subset failure_refine_def trace_refine_def) + +lemma FD_F: "P \\<^sub>F\<^sub>D Q \ P \\<^sub>F Q" + by (simp add: failure_divergence_refine_def failure_refine_def le_ref_def) + +lemma FD_D: "P \\<^sub>F\<^sub>D Q \ P \\<^sub>D Q" + by (simp add: divergence_refine_def failure_divergence_refine_def le_ref_def) + +lemma DT_D: "P \\<^sub>D\<^sub>T Q \ P \\<^sub>D Q" + by (simp add: trace_divergence_refine_def) + +lemma DT_T: "P \\<^sub>D\<^sub>T Q \ P \\<^sub>T Q" + by (simp add: trace_divergence_refine_def) + +lemma F_D_FD:"P \\<^sub>F Q \ P \\<^sub>D Q \ P \\<^sub>F\<^sub>D Q" + by (simp add: divergence_refine_def failure_divergence_refine_def failure_refine_def le_ref_def) + +lemma D_T_DT:"P \\<^sub>D Q \ P \\<^sub>T Q \ P \\<^sub>D\<^sub>T Q" + by (simp add: trace_divergence_refine_def) + +section \Some obvious refinements\ + +lemma bot_FD[simp]: "\ \\<^sub>F\<^sub>D Q" + by (simp add: failure_divergence_refine_def) + +corollary bot_F[simp]: "\ \\<^sub>F Q" + and bot_D[simp]: "\ \\<^sub>D Q" + and bot_T[simp]: "\ \\<^sub>T Q" + and bot_DT[simp]: "\ \\<^sub>D\<^sub>T Q" + by (simp_all add: FD_F FD_D le_F_T D_T_DT) + +lemma STOP_leDT[simp]: "P \\<^sub>D\<^sub>T STOP" + by (simp add: D_STOP D_T_DT Nil_elem_T T_STOP divergence_refine_def trace_refine_def) + +\\For refinement proofs, we need admissibility and monotony starting with idempotency and + transitivity\ + +section \Idempotency\ + +lemma idem_F[simp]: "P \\<^sub>F P" + by (simp add: failure_refine_def) + +lemma idem_D[simp]: "P \\<^sub>D P" + by (simp add: divergence_refine_def) + +lemma idem_T[simp]: "P \\<^sub>T P" + by (simp add: trace_refine_def) + +lemma idem_FD[simp]: "P \\<^sub>F\<^sub>D P" + by (simp add: failure_divergence_refine_def) + +lemma idem_DT[simp]: "P \\<^sub>D\<^sub>T P" + by (simp add: trace_divergence_refine_def) + +section \Transitivity\ + +lemma trans_F: "P \\<^sub>F Q \ Q \\<^sub>F S \ P \\<^sub>F S" + by (meson failure_refine_def order_trans) + +lemma trans_D: "P \\<^sub>D Q \ Q \\<^sub>D S \ P \\<^sub>D S" + by (meson divergence_refine_def order_trans) + +lemma trans_T: "P \\<^sub>T Q \ Q \\<^sub>T S \ P \\<^sub>T S" + by (meson trace_refine_def order_trans) + +lemma trans_FD: "P \\<^sub>F\<^sub>D Q \ Q \\<^sub>F\<^sub>D S \ P \\<^sub>F\<^sub>D S" + by (meson failure_divergence_refine_def order_trans) + +lemma trans_DT: "P \\<^sub>D\<^sub>T Q \ Q \\<^sub>D\<^sub>T S \ P \\<^sub>D\<^sub>T S" + by (meson trace_divergence_refine_def order_trans trans_D trans_T) + +section \Admissibility\ + +lemma le_F_adm: "cont (u::('a::cpo) \ 'b process) \ monofun v \ adm(\x. u x \\<^sub>F v x)" +proof(auto simp add:cont2contlubE adm_def failure_refine_def) + fix Y a b + assume 1:"cont u" + and 2:"monofun v" + and 3:"chain Y" + and 4:"\i. F (v (Y i)) \ F (u (Y i))" + and 5:" (a, b) \ F (v (\x. Y x))" + hence "v (Y i) \ v (\i. Y i)" for i by (simp add: is_ub_thelub monofunE) + hence "F (v (\i. Y i)) \ F (u (Y i))" for i using 4 le_approx_lemma_F by blast + then show "(a, b) \ F (\i. u (Y i))" + using F_LUB[OF ch2ch_cont[OF 1 3]] limproc_is_thelub[OF ch2ch_cont[OF 1 3]] 5 by force +qed + +lemma le_T_adm: "cont (u::('a::cpo) \ 'b process) \ monofun v \ adm(\x. u x \\<^sub>T v x)" +proof(auto simp add:cont2contlubE adm_def trace_refine_def) + fix Y x + assume 1:"cont u" + and 2:"monofun v" + and 3:"chain Y" + and 4:"\i. T (v (Y i)) \ T (u (Y i))" + and 5:" x \ T (v (\i. Y i))" + hence "v (Y i) \ v (\i. Y i)" for i by (simp add: is_ub_thelub monofunE) + hence "T (v (\i. Y i)) \ T (u (Y i))" for i using 4 le_approx_lemma_T by blast + then show "x \ T (\i. u (Y i))" + using T_LUB[OF ch2ch_cont[OF 1 3]] limproc_is_thelub[OF ch2ch_cont[OF 1 3]] 5 by force +qed + +lemma le_D_adm: "cont (u::('a::cpo) \ 'b process) \ monofun v \ adm(\x. u x \\<^sub>D v x)" +proof(auto simp add:cont2contlubE adm_def divergence_refine_def) + fix Y x + assume 1:"cont u" + and 2:"monofun v" + and 3:"chain Y" + and 4:"\i. D (v (Y i)) \ D (u (Y i))" + and 5:" x \ D (v (\i. Y i))" + hence "v (Y i) \ v (\i. Y i)" for i by (simp add: is_ub_thelub monofunE) + hence "D (v (\i. Y i)) \ D (u (Y i))" for i using 4 le_approx1 by blast + then show "x \ D (\i. u (Y i))" + using D_LUB[OF ch2ch_cont[OF 1 3]] limproc_is_thelub[OF ch2ch_cont[OF 1 3]] 5 by force +qed + +lemma le_DT_adm: "cont (u::('a::cpo) \ 'b process) \ monofun v \ adm(\x. u x \\<^sub>D\<^sub>T v x)" + using adm_conj[OF le_T_adm[of u v] le_D_adm[of u v]] by (simp add:trace_divergence_refine_def) + +lemmas le_FD_adm = le_adm[simplified failure_divergence_refine_def[symmetric]] + +section \Monotonicity\ + +lemma mono_det_D[simp]: "\P \\<^sub>D P'; S \\<^sub>D S'\ \ (P \ S) \\<^sub>D (P' \ S')" + by (metis D_det Un_mono divergence_refine_def) + +lemma mono_det_T[simp]: "\P \\<^sub>T P'; S \\<^sub>T S'\ \ (P \ S) \\<^sub>T (P' \ S')" + by (metis T_det Un_mono trace_refine_def) + +corollary mono_det_DT[simp]: "\P \\<^sub>D\<^sub>T P'; S \\<^sub>D\<^sub>T S'\ \ (P \ S) \\<^sub>D\<^sub>T (P' \ S')" + by (simp_all add: trace_divergence_refine_def) + +lemmas mono_det_FD[simp]= mono_det_FD[simplified failure_divergence_refine_def[symmetric]] + +\\Deterministic choice monotony doesn't hold for \\\<^sub>F\\ + + +lemma mono_ndet_F[simp]: "\P \\<^sub>F P'; S \\<^sub>F S'\ \ (P \ S) \\<^sub>F (P' \ S')" + by (metis F_ndet Un_mono failure_refine_def) + +lemma mono_ndet_D[simp]: "\P \\<^sub>D P'; S \\<^sub>D S'\ \ (P \ S) \\<^sub>D (P' \ S')" + by (metis D_ndet Un_mono divergence_refine_def) + +lemma mono_ndet_T[simp]: "\P \\<^sub>T P'; S \\<^sub>T S'\ \ (P \ S) \\<^sub>T (P' \ S')" + by (metis T_ndet Un_mono trace_refine_def) + +corollary mono_ndet_DT[simp]: "\P \\<^sub>D\<^sub>T P'; S \\<^sub>D\<^sub>T S'\ \ (P \ S) \\<^sub>D\<^sub>T (P' \ S')" + by (auto simp add: trace_divergence_refine_def) + +lemmas mono_ndet_FD[simp]= + mono_ndet_FD[simplified failure_divergence_refine_def[symmetric]] + +lemma mono_ndet_F_left[simp]: "P \\<^sub>F Q \ (P \ S) \\<^sub>F Q" + by (simp add: F_ndet failure_refine_def order_trans) + +lemma mono_ndet_D_left[simp]: "P \\<^sub>D Q \ (P \ S) \\<^sub>D Q" + by (simp add: D_ndet divergence_refine_def order_trans) + +lemma mono_ndet_T_left[simp]: "P \\<^sub>T Q \ (P \ S) \\<^sub>T Q" + by (simp add: T_ndet trace_refine_def order_trans) + +corollary mono_ndet_DT_left[simp]: "P \\<^sub>D\<^sub>T Q \ (P \ S) \\<^sub>D\<^sub>T Q" + and mono_ndet_F_right[simp]: "P \\<^sub>F Q \ (S \ P) \\<^sub>F Q" + and mono_ndet_D_right[simp]: "P \\<^sub>D Q \ (S \ P) \\<^sub>D Q" + and mono_ndet_T_right[simp]: "P \\<^sub>T Q \ (S \ P) \\<^sub>T Q" + and mono_ndet_DT_right[simp]: "P \\<^sub>D\<^sub>T Q \ (S \ P) \\<^sub>D\<^sub>T Q" + by (simp_all add: trace_divergence_refine_def Ndet_commute) + +lemmas +mono_ndet_FD_left[simp] = + mono_ndet_FD_left[simplified failure_divergence_refine_def[symmetric]] and +mono_ndet_FD_right[simp] = + mono_ndet_FD_right[simplified failure_divergence_refine_def[symmetric]] + +lemma mono_ndet_det_FD[simp]: "(P \ S) \\<^sub>F\<^sub>D (P \ S)" + by (metis det_id failure_divergence_refine_def mono_det_FD mono_ndet_FD_left + mono_ndet_FD_right order_refl) + +corollary mono_ndet_det_F[simp]: "(P \ S) \\<^sub>F (P \ S)" + and mono_ndet_det_D[simp]: "(P \ S) \\<^sub>D (P \ S)" + and mono_ndet_det_T[simp]: "(P \ S) \\<^sub>T (P \ S)" + and mono_ndet_det_DT[simp]: "(P \ S) \\<^sub>D\<^sub>T (P \ S)" + by (simp_all add: FD_F FD_D le_F_T D_T_DT) + + +lemma mono_seq_F_right[simp]: "S \\<^sub>F S' \ (P `;` S) \\<^sub>F (P `;` S')" + apply (auto simp: failure_refine_def F_seq append_single_T_imp_tickFree) + using NF_ND by fastforce+ + +lemma mono_seq_D_right[simp]: "S \\<^sub>D S' \ (P `;` S) \\<^sub>D (P `;` S')" + by (auto simp: divergence_refine_def D_seq) + +lemma mono_seq_T_right[simp]: "S \\<^sub>T S' \ (P `;` S) \\<^sub>T (P `;` S')" + apply (auto simp: trace_refine_def T_seq append_single_T_imp_tickFree) + using D_T by fastforce+ + +corollary mono_seq_DT_right[simp]: "S \\<^sub>D\<^sub>T S' \ (P `;` S) \\<^sub>D\<^sub>T (P `;` S')" + by (simp add: trace_divergence_refine_def) + +lemma mono_seq_DT_left[simp]: "P \\<^sub>D\<^sub>T P' \ (P `;` S) \\<^sub>D\<^sub>T (P' `;` S)" + apply (auto simp: trace_divergence_refine_def divergence_refine_def trace_refine_def D_seq T_seq) + by (metis (no_types, lifting) Nil_elem_T Process.F_T T_F append.right_neutral + is_processT5_S3 subset_eq) + +\\left sequence monotony doesn't hold for \\\<^sub>F\, \\\<^sub>D\ and \\\<^sub>T\\ + +corollary mono_seq_DT[simp]: "P \\<^sub>D\<^sub>T P' \ S \\<^sub>D\<^sub>T S' \ (P `;` S) \\<^sub>D\<^sub>T (P' `;` S')" + using mono_seq_DT_left mono_seq_DT_right trans_DT by blast + +lemmas mono_seq_FD[simp]= mono_seq_FD[simplified failure_divergence_refine_def[symmetric]] + + +lemma mono_mprefix_F_process[simp]: "\x. P x \\<^sub>F Q x \ Mprefix A P \\<^sub>F Mprefix A Q" + by (auto simp: failure_refine_def F_Mprefix) + +lemma mono_mprefix_D_process[simp]: "\x. P x \\<^sub>D Q x \ Mprefix A P \\<^sub>D Mprefix A Q" + by (auto simp: divergence_refine_def D_Mprefix) + +lemma mono_mprefix_T_process[simp]: "\x. P x \\<^sub>T Q x \ Mprefix A P \\<^sub>T Mprefix A Q" + by (auto simp: trace_refine_def T_Mprefix) + +corollary mono_mprefix_DT_process[simp]: "\x. P x \\<^sub>D\<^sub>T Q x \ Mprefix A P \\<^sub>D\<^sub>T Mprefix A Q" + by (simp add: trace_divergence_refine_def) + +lemmas +mono_mprefix_FD_process[simp] = + mono_mprefix_FD[simplified failure_divergence_refine_def[symmetric]] + +lemma mono_mprefix_DT_set[simp]: "A \ B \ Mprefix B P \\<^sub>D\<^sub>T Mprefix A P" + by (auto simp add:T_Mprefix D_Mprefix trace_divergence_refine_def + trace_refine_def divergence_refine_def) + +corollary mono_mprefix_D_set[simp]: "A \ B \ Mprefix B P \\<^sub>D Mprefix A P" + and mono_mprefix_T_set[simp]: "A \ B \ Mprefix B P \\<^sub>T Mprefix A P" + by (simp_all add: DT_D DT_T) + +\\Mprefix set monotony doesn't hold for \\\<^sub>F\ and \\\<^sub>F\<^sub>D\ where it holds for deterministic choice\ + + +lemma mono_hide_F[simp]: "P \\<^sub>F Q \ P \\ A \\<^sub>F Q \\ A" + apply(cases "A={}", simp_all add: hide_set_empty failure_refine_def F_hiding, intro conjI, blast) +proof(subst (2) Un_commute, rule subsetI, rule UnCI, auto, goal_cases) + case (1 b t u) + then obtain a where a:"a \ A" by blast + define f where A:"f = rec_nat t (\i t. t @ [ev a])" + hence AA:"f (Suc i) = (f i) @ [ev a]" for i by simp + hence B:"strict_mono f" by (simp add:strict_mono_def lift_Suc_mono_less_iff) + from A have C:"t \ range f" by (metis (mono_tags, lifting) old.nat.simps(6) range_eqI) + { fix i + have "f i \ D Q \ tickFree (f i) \ trace_hide (f i) (ev ` A) = (trace_hide t (ev ` A))" + proof(induct i) + case 0 + then show ?case by (simp add: 1(4) 1(7) A) + next + case (Suc i) + then show ?case + apply (simp add:AA a) + using is_processT7[rule_format, of "f i" Q "[ev a]"] front_tickFree_single by blast + qed + } + with B C have "isInfHiddenRun f P A \ t \ range f" + by (metis 1(1) D_T F_subset_imp_T_subset subsetD) + with 1 show ?case by metis +next + case (2 b u f x) + then show ?case using F_subset_imp_T_subset by blast +qed + +lemma mono_hide_T[simp]: "P \\<^sub>T Q \ P \\ A \\<^sub>T Q \\ A" + apply(cases "A={}", simp add: hide_set_empty, simp add:trace_refine_def T_hiding, intro conjI) +proof(goal_cases) + case 1 + then show ?case + proof(subst Un_commute, rule_tac subsetI, rule_tac UnCI, auto, goal_cases) + case 11:(1 t a) + hence tt:"t \ T P" by (meson Process.F_T subset_eq) + with 11(1) inf_hidden[of A t P] obtain f where "isInfHiddenRun f P A \ t \ range f" by auto + with 11(4)[rule_format, of t "[]"] show ?case + by (metis 11(1) tt append_Nil2 front_tickFree_Nil is_processT2_TR + nonTickFree_n_frontTickFree tick_T_F) + qed +next + case 2 + then show ?case + proof(subst Un_commute, auto, goal_cases) + case 21:(1 t u a) + define f where A:"f = rec_nat t (\i t. t @ [ev a])" + hence AA:"f (Suc i) = (f i) @ [ev a]" for i by simp + hence B:"strict_mono f" by (simp add:strict_mono_def lift_Suc_mono_less_iff) + from A have C:"t \ range f" + by (metis (mono_tags, lifting) old.nat.simps(6) range_eqI) + { fix i + have "f i \ D Q \ tickFree (f i) \ trace_hide (f i) (ev ` A) = (trace_hide t (ev ` A))" + proof(induct i) + case 0 + then show ?case by (simp add: 21(4) 21(7) A) + next + case (Suc i) + then show ?case + apply (simp add:AA 21(6)) + using is_processT7[rule_format, of "f i" Q "[ev a]"] front_tickFree_single by blast + qed + } + with B C have "isInfHiddenRun f P A \ t \ range f" by (metis 21(1) D_T subsetD) + with 21 show ?case by metis + next + case 22:(2 b u f x) + then show ?case by blast + qed +qed + +lemma mono_hide_DT[simp]: "P \\<^sub>D\<^sub>T Q \ P \\ A \\<^sub>D\<^sub>T Q \\ A" +proof - + assume as:"P \\<^sub>D\<^sub>T Q" + then have "P \\ A \\<^sub>D Q \\ A" + apply(auto simp:trace_divergence_refine_def divergence_refine_def + trace_refine_def D_hiding T_hiding) + by blast+ + with DT_T[THEN mono_hide_T, OF as] show ?thesis by (simp add: trace_divergence_refine_def) +qed + +lemmas mono_hide_FD[simp] = + mono_hide_FD[simplified failure_divergence_refine_def[symmetric]] + +\\Obviously, Hide monotony doesn't hold for \\\<^sub>D\\ + + +lemma mono_sync_DT[simp]: "P \\<^sub>D\<^sub>T P' \ Q \\<^sub>D\<^sub>T Q' \ (P \ A \ Q) \\<^sub>D\<^sub>T (P' \ A \ Q')" + by (simp add:trace_divergence_refine_def divergence_refine_def trace_refine_def T_sync D_sync) + blast + +lemmas mono_sync_FD[simp] = + mono_sync_FD[simplified failure_divergence_refine_def[symmetric]] + +\\synchronization monotony doesn't hold for \\\<^sub>F\, \\\<^sub>D\ and \\\<^sub>T\\ + + +lemma mono_mndet_F_process[simp]: "\x\A. P x \\<^sub>F Q x \ mndet A P \\<^sub>F mndet A Q" + by (cases "A = {}", auto simp: failure_refine_def F_mndet write0_def F_Mprefix) + +lemma mono_mndet_D_process[simp]: "\x\A. P x \\<^sub>D Q x \ mndet A P \\<^sub>D mndet A Q" + by (cases "A = {}", auto simp: divergence_refine_def D_mndet write0_def D_Mprefix) + +lemma mono_mndet_T_process[simp]: "\x\A. P x \\<^sub>T Q x \ mndet A P \\<^sub>T mndet A Q" + by (cases "A = {}", auto simp: trace_refine_def T_mndet write0_def T_Mprefix) + +corollary mono_mndet_DT_process[simp]: "\x\A. P x \\<^sub>D\<^sub>T Q x \ mndet A P \\<^sub>D\<^sub>T mndet A Q" + by (simp add: trace_divergence_refine_def) + +lemmas +mono_mndet_FD_process[simp] = + mono_mndet_FD[simplified failure_divergence_refine_def[symmetric]] + +lemmas +mono_mndet_FD_set[simp] = + mndet_FD_subset[simplified failure_divergence_refine_def[symmetric]] + +corollary mono_mndet_F_set[simp]: "A \ {} \ A \ B \ mndet B P \\<^sub>F mndet A P" + and mono_mndet_D_set[simp]: "A \ {} \ A \ B \ mndet B P \\<^sub>D mndet A P" + and mono_mndet_T_set[simp]: "A \ {} \ A \ B \ mndet B P \\<^sub>T mndet A P" + and mono_mndet_DT_set[simp]: "A \ {} \ A \ B \ mndet B P \\<^sub>D\<^sub>T mndet A P" + by (simp_all add: FD_F FD_D le_F_T D_T_DT) + +lemmas +Mprefix_refines_Mndet_FD[simp] = + Mprefix_refines_Mndet[simplified failure_divergence_refine_def[symmetric]] + +corollary Mprefix_refines_Mndet_F[simp]: "mndet A P \\<^sub>F Mprefix A P" + and Mprefix_refines_Mndet_D[simp]: "mndet A P \\<^sub>D Mprefix A P" + and Mprefix_refines_Mndet_T[simp]: "mndet A P \\<^sub>T Mprefix A P" + and Mprefix_refines_Mndet_DT[simp]: "mndet A P \\<^sub>D\<^sub>T Mprefix A P" + by (simp_all add: FD_F FD_D le_F_T D_T_DT) + + +section \Reference processes and their unfolding rules\ + +thm DF_def DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_def RUN_def CHAOS_def + +definition CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P :: "'a set \ 'a process" + where "CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A \ \ X. (SKIP \ STOP \ (\ x \ A \ X))" + + +thm DF_unfold DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold + +lemma RUN_unfold : "RUN A = (\ z \ A \ RUN A)" + by(simp add: RUN_def, rule trans, rule fix_eq, simp) + +lemma CHAOS_unfold : "CHAOS A = (STOP \ (\ z \ A \ CHAOS A))" + by(simp add: CHAOS_def, rule trans, rule fix_eq, simp) + +lemma CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold: "CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A \ SKIP \ STOP \ (\ x \ A \ CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A)" + unfolding CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_def using fix_eq[of "\ X. (SKIP \ STOP \ (\ x \ A \ X))"] by simp + +section \Process events and reference processes events\ + +definition events_of where "events_of P \ (\t\T P. {a. ev a \ set t})" + +lemma events_DF: "events_of (DF A) = A" +proof(auto simp add:events_of_def) + fix x t + show "t \ T (DF A) \ ev x \ set t \ x \ A" + proof(induct t) + case Nil + then show ?case by simp + next + case (Cons a t) + from Cons(2) have "a # t \ T (\z\A \ DF A)" using DF_unfold by metis + then obtain aa where "a = ev aa \ aa \ A \ t \ T (DF A)" + by (cases "A={}", auto simp add:T_mndet write0_def T_Mprefix T_STOP) + with Cons show ?case by auto + qed +next + fix x + show "x \ A \ \xa\T (DF A). ev x \ set xa" + apply(subst DF_unfold, cases "A={}", auto simp add:T_mndet write0_def T_Mprefix) + by (metis Nil_elem_T list.sel(1) list.sel(3) list.set_intros(1)) +qed + +lemma events_DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P: "events_of (DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A) = A" +proof(auto simp add:events_of_def) + fix x t + show "t \ T (DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A) \ ev x \ set t \ x \ A" + proof(induct t) + case Nil + then show ?case by simp + next + case (Cons a t) + from Cons(2) have "a # t \ T ((\z\A \ DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A) \ SKIP)" using DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold by metis + with Cons obtain aa where "a = ev aa \ aa \ A \ t \ T (DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A)" + by (cases "A={}", auto simp add:T_mndet write0_def T_Mprefix T_STOP T_SKIP T_ndet) + with Cons show ?case by auto + qed +next + fix x + show "x \ A \ \xa\T (DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A). ev x \ set xa" + apply(subst DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold, cases "A={}") + apply(auto simp add:T_mndet write0_def T_Mprefix T_SKIP T_ndet) + by (metis Nil_elem_T list.sel(1) list.sel(3) list.set_intros(1)) +qed + +lemma events_RUN: "events_of (RUN A) = A" +proof(auto simp add:events_of_def) + fix x t + show "t \ T (RUN A) \ ev x \ set t \ x \ A" + proof(induct t) + case Nil + then show ?case by simp + next + case (Cons a t) + from Cons(2) have "a # t \ T (\z\A \ RUN A)" using RUN_unfold by metis + then obtain aa where "a = ev aa \ aa \ A \ t \ T (RUN A)" by (auto simp add:T_Mprefix) + with Cons show ?case by auto + qed +next + fix x + show "x \ A \ \xa\T (RUN A). ev x \ set xa" + apply(subst RUN_unfold, simp add: T_Mprefix) + by (metis Nil_elem_T list.sel(1) list.sel(3) list.set_intros(1)) +qed + +lemma events_CHAOS: "events_of (CHAOS A) = A" +proof(auto simp add:events_of_def) + fix x t + show "t \ T (CHAOS A) \ ev x \ set t \ x \ A" + proof(induct t) + case Nil + then show ?case by simp + next + case (Cons a t) + from Cons(2) have "a # t \ T (STOP \ (\ z \ A \ CHAOS A))" using CHAOS_unfold by metis + then obtain aa where "a = ev aa \ aa \ A \ t \ T (CHAOS A)" + by (auto simp add:T_ndet T_Mprefix T_STOP) + with Cons show ?case by auto + qed +next + fix x + show "x \ A \ \xa\T (CHAOS A). ev x \ set xa" + apply(subst CHAOS_unfold, simp add:T_ndet T_Mprefix T_STOP) + by (metis Nil_elem_T list.sel(1) list.sel(3) list.set_intros(1)) +qed + +lemma events_CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P: "events_of (CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A) = A" +proof(auto simp add:events_of_def) + fix x t + show "t \ T (CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A) \ ev x \ set t \ x \ A" + proof(induct t) + case Nil + then show ?case by simp + next + case (Cons a t) + from Cons(2) have "a # t \ T (SKIP \ STOP \ (\ z \ A \ CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A))" + using CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold by metis + with Cons obtain aa where "a = ev aa \ aa \ A \ t \ T (CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A)" + by (auto simp add:T_ndet T_Mprefix T_STOP T_SKIP) + with Cons show ?case by auto + qed +next + fix x + show "x \ A \ \xa\T (CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A). ev x \ set xa" + apply(subst CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold, simp add:T_ndet T_Mprefix T_STOP T_SKIP) + by (metis Nil_elem_T list.sel(1) list.sel(3) list.set_intros(1)) +qed + +lemma events_div: "D(P) \ {} \ events_of (P) = UNIV" +proof(auto simp add:events_of_def) + fix x xa + assume 1: "x \ D P" + show "\x\T P. ev xa \ set x" + proof(cases "tickFree x") + case True + hence "x@[ev xa] \ T P" + using 1 NT_ND front_tickFree_single is_processT7 by blast + then show ?thesis by force + next + case False + hence "(butlast x)@[ev xa] \ T P" + by (metis "1" D_T D_imp_front_tickFree append_single_T_imp_tickFree butlast_snoc + front_tickFree_single nonTickFree_n_frontTickFree process_charn) + then show ?thesis by force + qed +qed + + +thm DF_subset + +lemma DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_subset_FD: "A \ {} \ A \ B \ DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P B \\<^sub>F\<^sub>D DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A" + apply(subst DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_def, rule fix_ind, rule le_FD_adm, simp_all add:monofunI, subst DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold) + by (rule mono_ndet_FD, simp_all) (meson mono_mndet_FD_process mono_mndet_FD_set trans_FD) + +lemma RUN_subset_DT: "A \ B \ RUN B \\<^sub>D\<^sub>T RUN A" + apply(subst RUN_def, rule fix_ind, rule le_DT_adm, simp_all add:monofunI, subst RUN_unfold) + by (meson mono_mprefix_DT_process mono_mprefix_DT_set trans_DT) + +lemma CHAOS_subset_FD: "A \ B \ CHAOS B \\<^sub>F\<^sub>D CHAOS A" + apply(subst CHAOS_def, rule fix_ind, rule le_FD_adm, simp_all add:monofunI, subst CHAOS_unfold) + by (auto simp add: failure_divergence_refine_def le_ref_def + D_Mprefix D_ndet F_STOP F_Mprefix F_ndet) + +lemma CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_subset_FD: "A \ B \ CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P B \\<^sub>F\<^sub>D CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A" + apply(subst CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_def, rule fix_ind, rule le_FD_adm) + apply(simp_all add:monofunI, subst CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold) + by (auto simp add: failure_divergence_refine_def le_ref_def + D_Mprefix D_ndet F_STOP F_Mprefix F_ndet) + +section \Relations between refinements on reference processes\ + +lemma CHAOS_has_all_tickFree_failures: + "tickFree a \ {x. ev x \ set a} \ A \ (a,b) \ F (CHAOS A)" +proof(induct a) + case Nil + then show ?case + by (subst CHAOS_unfold, simp add:F_ndet F_STOP) +next + case (Cons a0 al) + hence "tickFree al" + by (metis append.left_neutral append_Cons front_tickFree_charn front_tickFree_mono) + with Cons show ?case + apply (subst CHAOS_unfold, simp add:F_ndet F_STOP F_Mprefix events_of_def) + using event_set by blast +qed + +lemma CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_has_all_failures: + assumes as:"(events_of P) \ A" + shows "CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A \\<^sub>F P" +proof - + have "front_tickFree a \ set a \ (\t\T P. set t) \ (a,b) \ F (CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A)" for a b + proof(induct a) + case Nil + then show ?case + by (subst CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold, simp add:F_ndet F_STOP) + next + case (Cons a0 al) + hence "front_tickFree al" + by (metis append.left_neutral append_Cons front_tickFree_charn front_tickFree_mono) + with Cons show ?case + apply (subst CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold, simp add:F_ndet F_STOP F_SKIP F_Mprefix events_of_def as) + apply(cases "a0=tick") + apply (metis append.simps(2) front_tickFree_charn + front_tickFree_mono list.distinct(1) tickFree_Cons) + using event_set image_iff as[simplified events_of_def] by fastforce + qed + thus ?thesis + by (simp add: F_T SUP_upper failure_refine_def process_charn subrelI) +qed + +corollary CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_has_all_failures_ev: "CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P (events_of P) \\<^sub>F P" + and CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_has_all_failures_Un: "CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P UNIV \\<^sub>F P" + by (simp_all add: CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_has_all_failures) + + +lemma DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_DF_refine_F: "DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A \\<^sub>F DF A" + by (simp add:DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_def, rule fix_ind, simp_all add:le_F_adm monofunI, subst DF_unfold, simp) + +lemma DF_RUN_refine_F: "DF A \\<^sub>F RUN A" + apply (simp add:DF_def, rule fix_ind, simp_all add:le_F_adm monofunI, subst RUN_unfold) + by (meson Mprefix_refines_Mndet_F mono_mndet_F_process trans_F) + +lemma CHAOS_DF_refine_F: "CHAOS A \\<^sub>F DF A" + apply (simp add:CHAOS_def DF_def, rule parallel_fix_ind, simp_all add: monofunI) + apply (rule le_F_adm, simp_all add: monofun_snd) + by (cases "A={}", auto simp add:adm_def failure_refine_def F_mndet + F_Mprefix write0_def F_ndet F_STOP) + +corollary CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_CHAOS_refine_F: "CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A \\<^sub>F CHAOS A" + and CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_refine_F: "CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A \\<^sub>F DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A" + by (simp_all add: CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_has_all_failures events_CHAOS events_DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P + trans_F[OF CHAOS_DF_refine_F DF_RUN_refine_F]) + + +lemma div_free_DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P: "D(DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A) = {}" +proof(simp add:DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_def fix_def) + define Y where "Y \ \i. iterate i\(\ x. (\xa\A \ x) \ SKIP)\\" + hence a:"chain Y" by simp + have "D (Y (Suc i)) = {d. d \ [] \ hd d \ (ev ` A) \ tl d \ D(Y i)}" for i + by (cases "A={}", auto simp add:Y_def D_STOP D_SKIP D_mndet write0_def D_Mprefix D_ndet) + hence b:"d \ D(Y i) \ length d \ i" for d i + by (induct i arbitrary:d, simp_all add: Nitpick.size_list_simp(2)) + { fix x + assume c:"\ i. x \ D (Y i)" + from b have "x \ D (Y (Suc (length x)))" using Suc_n_not_le_n by blast + with c have False by simp + } + with a show "D (\i. Y i) = {}" + using D_LUB[OF a] limproc_is_thelub[OF a] by auto +qed + +lemma div_free_DF: "D(DF A) = {}" +proof - + have "DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A \\<^sub>D DF A" + by (simp add:DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_def, rule fix_ind, simp_all add:le_D_adm monofunI, subst DF_unfold, simp) + then show ?thesis using divergence_refine_def div_free_DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P by blast +qed + +lemma div_free_CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P: "D (CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A) = {}" +proof - + have "DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A \\<^sub>D CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A" + proof (simp add:DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_def, rule fix_ind, simp_all add:le_D_adm monofunI, subst CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold) + fix x + assume 1:"x \\<^sub>D CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A" + have a:"((\xa\A \ x) \ SKIP) = (SKIP \ SKIP \ (\xa\A \ x))" + by (simp add: Ndet_commute ndet_id) + from 1 have b:"(SKIP \ SKIP \ (\xa\A \ x)) \\<^sub>D (SKIP \ STOP \ (\xa\A \ CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A))" + by (meson DT_D Mprefix_refines_Mndet_D STOP_leDT idem_D + mono_mprefix_D_process mono_ndet_D trans_D) + from a b show "((\xa\A \ x) |-| SKIP) \\<^sub>D (SKIP |-| STOP |-| Mprefix A (\x. CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A))" + by simp + qed + then show ?thesis using divergence_refine_def div_free_DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P by blast +qed + +lemma div_free_CHAOS: "D(CHAOS A) = {}" +proof - + have "CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A \\<^sub>D CHAOS A" + apply (simp add:CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_def, rule fix_ind) + by (simp_all add:le_D_adm monofunI, subst CHAOS_unfold, simp) + then show ?thesis using divergence_refine_def div_free_CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P by blast +qed + +lemma div_free_RUN: "D(RUN A) = {}" +proof - + have "CHAOS A \\<^sub>D RUN A" + by (simp add:CHAOS_def, rule fix_ind, simp_all add:le_D_adm monofunI, subst RUN_unfold, simp) + then show ?thesis using divergence_refine_def div_free_CHAOS by blast +qed + +corollary DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_DF_refine_FD: "DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A \\<^sub>F\<^sub>D DF A" + and DF_RUN_refine_FD: "DF A \\<^sub>F\<^sub>D RUN A" + and CHAOS_DF_refine_FD: "CHAOS A \\<^sub>F\<^sub>D DF A" + and CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_CHAOS_refine_FD: "CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A \\<^sub>F\<^sub>D CHAOS A" + and CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_refine_FD: "CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A \\<^sub>F\<^sub>D DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A" + using div_free_DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P[of A] div_free_CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P[of A] div_free_DF[of A] div_free_RUN[of A] + div_free_CHAOS[of A] + F_D_FD[OF DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_DF_refine_F, of A] F_D_FD[OF DF_RUN_refine_F, of A] + F_D_FD[OF CHAOS_DF_refine_F, of A] F_D_FD[OF CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_CHAOS_refine_F, of A] + F_D_FD[OF CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_refine_F, of A] + by (auto simp add:divergence_refine_def) + + +lemma traces_CHAOS_sub: "T(CHAOS A) \ {s. set s \ ev ` A}" +proof(auto) + fix s sa + assume "s \ T (CHAOS A)" and "sa \ set s" + then show "sa \ ev ` A" + apply (induct s, simp) + by (subst (asm) (2) CHAOS_unfold, cases "A={}", auto simp add:T_ndet T_STOP T_Mprefix) +qed + +lemma traces_RUN_sub: "{s. set s \ ev ` A} \ T(RUN A)" +proof(auto) + fix s + assume "set s \ ev ` A" + then show "s \ T (RUN A)" + by (induct s, simp add: Nil_elem_T) (subst RUN_unfold, auto simp add:T_Mprefix) +qed + +corollary RUN_all_tickfree_traces1: "T(RUN A) = {s. set s \ ev ` A}" + and DF_all_tickfree_traces1: "T(DF A) = {s. set s \ ev ` A}" + and CHAOS_all_tickfree_traces1: "T(CHAOS A) = {s. set s \ ev ` A}" + using DF_RUN_refine_F[THEN le_F_T, simplified trace_refine_def] + CHAOS_DF_refine_F[THEN le_F_T,simplified trace_refine_def] + traces_CHAOS_sub traces_RUN_sub by blast+ + +corollary RUN_all_tickfree_traces2: "tickFree s \ s \ T(RUN UNIV)" + and DF_all_tickfree_traces2: "tickFree s \ s \ T(DF UNIV)" + and CHAOS_all_tickfree_trace2: "tickFree s \ s \ T(CHAOS UNIV)" + apply(simp_all add:tickFree_def RUN_all_tickfree_traces1 + DF_all_tickfree_traces1 CHAOS_all_tickfree_traces1) + by (metis event_set insertE subsetI)+ + +lemma traces_CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_sub: "T(CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A) \ {s. front_tickFree s \ set s \ (ev ` A \ {tick})}" +proof(auto simp add:is_processT2_TR) + fix s sa + assume "s \ T (CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A)" and "sa \ set s" and "sa \ ev ` A" + then show "sa = tick" + apply (induct s, simp) + by (subst (asm) (2) CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold, cases "A={}", auto simp add:T_ndet T_STOP T_SKIP T_Mprefix) +qed + +lemma traces_DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_sub: + "{s. front_tickFree s \ set s \ (ev ` A \ {tick})} \ T(DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A::'a process)" +proof(auto) + fix s + assume a:"front_tickFree s" and b:"set s \ insert tick (ev ` A)" + have c:"front_tickFree ((tick::'a event) # s) \ s = []" for s + by (metis butlast.simps(2) butlast_snoc front_tickFree_charn list.distinct(1) tickFree_Cons) + with a b show "s \ T (DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A)" + apply (induct s, simp add: Nil_elem_T, subst DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold, cases "A={}") + apply (subst DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold, cases "A={}") + apply(auto simp add:T_Mprefix T_mndet write0_def T_SKIP T_ndet T_STOP) + apply (metis append_Cons append_Nil front_tickFree_charn front_tickFree_mono) + by (metis append_Cons append_Nil front_tickFree_mono) + qed + +corollary DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_all_front_tickfree_traces1: + "T(DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P A) = {s. front_tickFree s \ set s \ (ev ` A \ {tick})}" + and CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_all_front_tickfree_traces1: + "T(CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P A) = {s. front_tickFree s \ set s \ (ev ` A \ {tick})}" + using CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_refine_F[THEN le_F_T, simplified trace_refine_def] + traces_CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_sub traces_DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_sub by blast+ + +corollary DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_all_front_tickfree_traces2: "front_tickFree s \ s \ T(DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P UNIV)" + and CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_all_front_tickfree_traces2: "front_tickFree s \ s \ T(CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P UNIV)" + apply(simp_all add:tickFree_def DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_all_front_tickfree_traces1 + CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_all_front_tickfree_traces1) + by (metis event_set subsetI)+ + +corollary DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_has_all_traces: "DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P UNIV \\<^sub>T P" + and CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_has_all_traces: "CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P UNIV \\<^sub>T P" + apply (simp add:trace_refine_def DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_all_front_tickfree_traces2 is_processT2_TR subsetI) + by (simp add:trace_refine_def CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_all_front_tickfree_traces2 is_processT2_TR subsetI) + +end diff --git a/thys/CSP_RefTK/Conclusion.thy b/thys/CSP_RefTK/Conclusion.thy new file mode 100644 --- /dev/null +++ b/thys/CSP_RefTK/Conclusion.thy @@ -0,0 +1,81 @@ +(*<*) +\\ ******************************************************************** + * Project : CSP-RefTK - A Refinement Toolkit for HOL-CSP + * Version : 1.0 + * + * Author : Burkhart Wolff, Safouan Taha, Lina Ye. + * + * This file : Conclusion + * + * Copyright (c) 2020 Université Paris-Saclay, France + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * * Neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************\ +(*>*) + +chapter\Conclusion\ +(*<*) +theory Conclusion + imports HOLCF +begin +(*>*) + +text\ We presented a formalisation of the most comprehensive semantic model for CSP, a 'classical' +language for the specification and analysis of concurrent systems studied in a rich body of +literature. For this purpose, we ported @{cite "tej.ea:corrected:1997"} to a modern version +of Isabelle, restructured the proofs, and extended the resulting theory of the language +substantially. The result HOL-CSP 2 has been submitted to the Isabelle AFP @{cite "HOL-CSP-AFP"}, +thus a fairly sustainable format accessible to other researchers and tools. + +We developed a novel set of deadlock - and livelock inference proof principles based on +classical and denotational characterizations. In particular, we formally investigated the relations +between different refinement notions in the presence of deadlock - and livelock; an area where +traditional CSP literature skates over the nitty-gritty details. Finally, we demonstrated how to +exploit these results for deadlock/livelock analysis of protocols. + +We put a large body of abstract CSP laws and induction principles together to form +concrete verification technologies for generalized classical problems, which have been considered +so far from the perspective of data-independence or structural parametricity. The underlying novel +principle of ``trading rich structure against rich state'' allows one to convert processes +into classical transition systems for which established invariant techniques become applicable. + +Future applications of HOL-CSP 2 could comprise a combination with model checkers, where our theory +with its derived rules can be used to certify the output of a model-checker over CSP. In our experience, +labelled transition systems generated by model checkers may be used to steer inductions or to construct +the normalized processes \P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\\\<^sub>,\\\ automatically, thus combining efficient finite reasoning +over finite sub-systems with globally infinite systems in a logically safe way. +\ + + +(*<*) +end +(*>*) + diff --git a/thys/CSP_RefTK/CopyBuffer_props.thy b/thys/CSP_RefTK/CopyBuffer_props.thy new file mode 100644 --- /dev/null +++ b/thys/CSP_RefTK/CopyBuffer_props.thy @@ -0,0 +1,129 @@ +(*<*) +\\ ******************************************************************** + * Project : CSP-RefTK - A Refinement Toolkit for HOL-CSP + * Version : 1.0 + * + * Author : Burkhart Wolff, Safouan Taha, Lina Ye. + * + * This file : The Copy-Buffer Example Revisited + * + * Copyright (c) 2020 Université Paris-Saclay, France + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * * Neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************\ +(*>*) + +chapter\Examples\ + +section\CopyBuffer Refinement over an infinite alphabet\ + +theory CopyBuffer_props + imports "HOL-CSP.CopyBuffer" "Properties" +begin + +subsection\ The Copy-Buffer vs. reference processes \ + +lemma DF_COPY: "(DF (range left \ range right)) \\<^sub>F\<^sub>D COPY" + apply(simp add:DF_def,rule fix_ind2, simp_all) + unfolding failure_divergence_refine_def +proof - + show "adm (\a. a \ COPY)" by(rule le_adm, simp_all add:monofunI) +next + have 1:"(\xa\ range left \ range right \ \) \ (\xa\ range left \ \)" + using mndet_subset_FD by (metis UNIV_I empty_iff imageI) + have 2:"(\xa\ range left \ \) \ (left`?`x \ \)" + unfolding read_def + by (metis Mprefix_refines_Mndet comp_apply dual_order.antisym mono_mprefix_FD order_refl) + + show "(\x\range left \ range right \ \) \ COPY" + by (metis (mono_tags, lifting) 1 2 COPY_rec bot_less1 mono_read_FD order.trans) +next + fix P::"'a channel process" + assume *: "P \ COPY" and ** : "(\x\range left \ range right \ P) \ COPY" + have 1:"(\xa\ range left \ range right \ P) \ (\xa\ range right \ P)" + using mndet_subset_FD by (metis UNIV_I Un_commute empty_iff imageI) + have 2:"(\xa\ range right \ P) \ (right`!`x \ P)" for x + using mndet_subset_FD[of "{right x}" "range right"] + by(simp add:write_def write0_def mndet_unit) + from 1 2 have ab:"(\xa\ range left \ range right \ P) \ (right`!`x \ P)" for x + using dual_order.trans by blast + hence 3:"(left`?`x \ (\xa\ range left \ range right \ P)) \ (left`?`x \(right`!`x \ P))" + by (simp add: mono_read_FD) + have 4:"\X. (\xa\ range left \ range right \ X) \ (\xa\ range left \ X)" + using mndet_subset_FD by (metis UNIV_I empty_iff imageI) + have 5:"\X. (\xa\ range left \ X) \ (left`?`x \ X)" + unfolding read_def + by (metis Mprefix_refines_Mndet comp_apply dual_order.antisym mono_mprefix_FD order_refl) + from 3 4[of "(\xa\ range left \ range right \ P)"] + 5 [of "(\xa\ range left \ range right \ P)"] + have 6:"(\xa\ range left \ range right \ + (\xa\ range left \ range right \ P)) \ (left`?`x \ (right`!`x \ P))" + by (meson dual_order.trans) + from * ** have 7:"(left`?`x \ (right`!`x \ P)) \ (left`?`x \ (right`!`x \ COPY))" + by (simp add: mono_read_FD mono_write_FD) + + show "(\x\range left \ range right \ \x\range left \ range right \ P) \ COPY" + by (metis (mono_tags, lifting) 6 7 COPY_rec dual_order.trans) +qed + +subsection\ ... and abstract consequences \ + +corollary df_COPY: "deadlock_free COPY" + and lf_COPY: "lifelock_free COPY" + apply (meson DF_COPY DF_Univ_freeness UNIV_not_empty image_is_empty sup_eq_bot_iff) + by (meson CHAOS_DF_refine_FD DF_COPY DF_Univ_freeness UNIV_not_empty deadlock_free_def + image_is_empty lifelock_free_def sup_eq_bot_iff trans_FD) + +corollary df_v2_COPY: "deadlock_free_v2 COPY" + and lf_v2_COPY: "lifelock_free_v2 COPY" + and nt_COPY: "non_terminating COPY" + apply (simp add: df_COPY deadlock_free_is_deadlock_free_v2) + apply (simp add: lf_COPY lifelock_free_is_lifelock_free_v2) + using lf_COPY lifelock_free_is_non_terminating by blast + +lemma DF_SYSTEM: "DF UNIV \\<^sub>F\<^sub>D SYSTEM" + using DF_subset[of "(range left \ range right)" UNIV, simplified] + impl_refines_spec[THEN le_approx_implies_le_ref] DF_COPY + failure_divergence_refine_def trans_FD by blast + +corollary df_SYSTEM: "deadlock_free SYSTEM" + and lf_SYSTEM: "lifelock_free SYSTEM" + apply (simp add: DF_SYSTEM deadlock_free_def) + using CHAOS_DF_refine_FD DF_SYSTEM lifelock_free_def trans_FD by blast + +corollary df_v2_SYSTEM: "deadlock_free_v2 SYSTEM" + and lf_v2_SYSTEM: "lifelock_free_v2 SYSTEM" + and nt_SYSTEM: "non_terminating SYSTEM" + apply (simp add: df_SYSTEM deadlock_free_is_deadlock_free_v2) + apply (simp add: lf_SYSTEM lifelock_free_is_lifelock_free_v2) + using lf_SYSTEM lifelock_free_is_non_terminating by blast + +end diff --git a/thys/CSP_RefTK/DiningPhilosophers.thy b/thys/CSP_RefTK/DiningPhilosophers.thy new file mode 100644 --- /dev/null +++ b/thys/CSP_RefTK/DiningPhilosophers.thy @@ -0,0 +1,970 @@ +(*<*) +\\ ******************************************************************** + * Project : CSP-RefTK - A Refinement Toolkit for HOL-CSP + * Version : 1.0 + * + * Author : Burkhart Wolff, Safouan Taha, Lina Ye. + * + * This file : Example on Structural Parameterisation: Dining Philosophers + * + * Copyright (c) 2020 Université Paris-Saclay, France + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * * Neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * TrHIS SOFTrWARE IS PROVIDED BY TrHE COPYRIGHTr HOLDERS AND CONTrRIBUTrORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTrIES, INCLUDING, BUTr NOTr + * LIMITrED TrO, TrHE IMPLIED WARRANTrIES OF MERCHANTrABILITrY AND FITrNESS FOR + * A PARTrICULAR PURPOSE ARE DISCLAIMED. IN NO EVENTr SHALL TrHE COPYRIGHTr + * OWNER OR CONTrRIBUTrORS BE LIABLE FOR ANY DIRECTr, INDIRECTr, INCIDENTrAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTrIAL DAMAGES (INCLUDING, BUTr NOTr + * LIMITrED TrO, PROCUREMENTr OF SUBSTrITrUTrE GOODS OR SERVICES; LOSS OF USE, + * DATrA, OR PROFITrS; OR BUSINESS INTrERRUPTrION) HOWEVER CAUSED AND ON ANY + * TrHEORY OF LIABILITrY, WHETrHER IN CONTrRACTr, STrRICTr LIABILITrY, OR TrORTr + * (INCLUDING NEGLIGENCE OR OTrHERWISE) ARISING IN ANY WAY OUTr OF TrHE USE + * OF TrHIS SOFTrWARE, EVEN IF ADVISED OF TrHE POSSIBILITrY OF SUCH DAMAGE. + ******************************************************************************\ +(*>*) + +section\ Generalized Dining Philosophers \ + +theory DiningPhilosophers + imports "Process_norm" +begin + +subsection \Preliminary lemmas for proof automation\ + +lemma Suc_mod: "n > 1 \ i \ Suc i mod n" + by (metis One_nat_def mod_Suc mod_if mod_mod_trivial n_not_Suc_n) + +lemmas suc_mods = Suc_mod Suc_mod[symmetric] + +lemma l_suc: "n > 1 \ \ n \ Suc 0" + by simp + +lemma minus_suc: "n > 0 \ n - Suc 0 \ n" + by linarith + +lemma numeral_4_eq_4:"4 = Suc (Suc (Suc (Suc 0)))" + by simp + +lemma numeral_5_eq_5:"5 = Suc (Suc (Suc (Suc (Suc 0))))" + by simp + +subsection\The dining processes definition\ + +locale DiningPhilosophers = + + fixes N::nat + assumes N_g1[simp] : "N > 1" + +begin + +datatype dining_event = picks (phil:nat) (fork:nat) + | putsdown (phil:nat) (fork:nat) + +definition RPHIL:: "nat \ dining_event process" + where "RPHIL i = (\ X. (picks i i \ (picks i (i-1) \ (putsdown i (i-1) \ (putsdown i i \ X)))))" + +definition LPHIL0:: "dining_event process" + where "LPHIL0 = (\ X. (picks 0 (N-1) \ (picks 0 0 \ (putsdown 0 0 \ (putsdown 0 (N-1) \ X)))))" + +definition FORK :: "nat \ dining_event process" + where "FORK i = (\ X. (picks i i \ (putsdown i i \ X)) + \ (picks ((i+1) mod N) i \ (putsdown ((i+1) mod N) i \ X)))" + + +abbreviation "foldPHILs n \ fold (\ i P. P ||| RPHIL i) [1..< n] (LPHIL0)" +abbreviation "foldFORKs n \ fold (\ i P. P ||| FORK i) [1..< n] (FORK 0)" + +abbreviation "PHILs \ foldPHILs N" +abbreviation "FORKs \ foldFORKs N" + +corollary FORKs_def2: "FORKs = fold (\ i P. P ||| FORK i) [0..< N] SKIP" + using N_g1 by (subst (2) upt_rec, auto) (metis (no_types, lifting) Inter_commute Inter_skip1) + +corollary "N = 3 \ PHILs = (LPHIL0 ||| RPHIL 1 ||| RPHIL 2)" + by (subst upt_rec, auto simp add:numeral_2_eq_2)+ + + +definition DINING :: "dining_event process" + where "DINING = (FORKs || PHILs)" + +subsubsection \Unfolding rules\ + +lemma RPHIL_rec: + "RPHIL i = (picks i i \ (picks i (i-1) \ (putsdown i (i-1) \ (putsdown i i \ RPHIL i))))" + by (simp add:RPHIL_def write0_def, subst fix_eq, simp) + +lemma LPHIL0_rec: + "LPHIL0 = (picks 0 (N-1) \ (picks 0 0 \ (putsdown 0 0 \ (putsdown 0 (N-1) \ LPHIL0))))" + by (simp add:LPHIL0_def write0_def, subst fix_eq, simp) + +lemma FORK_rec: "FORK i = ( (picks i i \ (putsdown i i \ (FORK i))) + \ (picks ((i+1) mod N) i \ (putsdown ((i+1) mod N) i \ (FORK i))))" + by (simp add:FORK_def write0_def, subst fix_eq, simp) + +subsection \Translation into normal form\ + +lemma N_pos[simp]: "N > 0" + using N_g1 neq0_conv by blast + +lemmas N_pos_simps[simp] = suc_mods[OF N_g1] l_suc[OF N_g1] minus_suc[OF N_pos] + +text \The one-fork process\ + +type_synonym fork_id = nat +type_synonym fork_state = nat + +definition fork_transitions:: "fork_id \ fork_state \ dining_event set" ("Tr\<^sub>f") + where "Tr\<^sub>f i s = (if s = 0 then {picks i i} \ {picks ((i+1) mod N) i} + else if s = 1 then {putsdown i i} + else if s = 2 then {putsdown ((i+1) mod N) i} + else {})" +declare Un_insert_right[simp del] Un_insert_left[simp del] + +lemma ev_fork_idx[simp]: "e \ Tr\<^sub>f i s \ fork e = i" + by (auto simp add:fork_transitions_def split:if_splits) + +definition fork_state_update:: "fork_id \ fork_state \ dining_event \ fork_state" ("Up\<^sub>f") + where "Up\<^sub>f i s e = ( if e = (picks i i) then 1 + else if e = (picks ((i+1) mod N) i) then 2 + else 0 )" + +definition FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m:: "fork_id \ fork_state \ dining_event process" + where "FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m i = P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\Tr\<^sub>f i ,Up\<^sub>f i\" + +lemma FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec: "FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m i = (\ s. \ e \ (Tr\<^sub>f i s) \ FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m i (Up\<^sub>f i s e))" + using fix_eq[of "\ X. (\s. Mprefix (Tr\<^sub>f i s) (\e. X (Up\<^sub>f i s e)))"] FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def by simp + +lemma FORK_refines_FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m: "FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m i 0 \ FORK i" +proof(unfold FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def, + induct rule:fix_ind_k_skip[where k=2 and f="\ x.(\s. Mprefix (Tr\<^sub>f i s) (\e. x (Up\<^sub>f i s e)))"]) + show "(1::nat) \ 2" by simp +next + show "adm (\a. a 0 \ FORK i)" by (simp add: cont_fun) +next + case base_k_steps:3 + show ?case (is "\j<2. (iterate j\?f\\) 0 \ FORK i") + proof - + have less_2:"\j. (j::nat) < 2 = (j = 0 \ j = 1)" by linarith + moreover have "(iterate 0\?f\\) 0 \ FORK i" by simp + moreover have "(iterate 1\?f\\) 0 \ FORK i" + by (subst FORK_rec) + (simp add: write0_def + fork_transitions_def + mprefix_Un_distr mono_det_ref mono_mprefix_ref) + ultimately show ?thesis by simp + qed +next + case step:(4 x) + then show ?case (is "(iterate 2\?f\x) 0 \ FORK i") + by (subst FORK_rec) + (simp add: write0_def numeral_2_eq_2 + fork_transitions_def fork_state_update_def + mprefix_Un_distr mono_det_ref mono_mprefix_ref) +qed + +lemma FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m_refines_FORK: "FORK i \ FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m i 0" +proof(unfold FORK_def, + induct rule:fix_ind_k_skip[where k=1]) + show "(1::nat) \ 1" by simp +next + show "adm (\a. a \ FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m i 0)" by simp +next + case base_k_steps:3 + show ?case by simp +next + case step:(4 x) + then show ?case (is "iterate 1\?f\x \ FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m i 0") + apply (subst FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec) + apply (simp add: write0_def + fork_transitions_def fork_state_update_def + mprefix_Un_distr) + by (subst (1 2) FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec) + (simp add: fork_transitions_def fork_state_update_def + mprefix_Un_distr mono_det_ref mono_mprefix_ref) +qed + +lemma FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m_is_FORK: "FORK i = FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m i 0" + using FORK_refines_FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m_refines_FORK below_antisym by blast + + +text \The all-forks process in normal form\ + +type_synonym forks_state = "nat list" + +definition forks_transitions:: "nat \ forks_state \ dining_event set" ("Tr\<^sub>F") + where "Tr\<^sub>F n fs = (\if i (fs!i))" + +lemma forks_transitions_take: "Tr\<^sub>F n fs = Tr\<^sub>F n (take n fs)" + by (simp add:forks_transitions_def) + +definition forks_state_update:: "forks_state \ dining_event \ forks_state" ("Up\<^sub>F") + where "Up\<^sub>F fs e = (let i=(fork e) in fs[i:=(Up\<^sub>f i (fs!i) e)])" + +lemma forks_update_take: "take n (Up\<^sub>F fs e) = Up\<^sub>F (take n fs) e" + unfolding forks_state_update_def + by (metis nat_less_le nat_neq_iff nth_take order_refl take_update_cancel take_update_swap) + +definition FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m:: "nat \ forks_state \ dining_event process" + where "FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m n = P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\Tr\<^sub>F n ,Up\<^sub>F\" + +lemma FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec: "FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m n = (\ fs. \ e \ (Tr\<^sub>F n fs) \ FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (Up\<^sub>F fs e))" + using fix_eq[of "\ X. (\fs. Mprefix (Tr\<^sub>F n fs) (\e. X (Up\<^sub>F fs e)))"] FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def by simp + +lemma FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_0: "FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m 0 fs = STOP" + by (subst FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec, simp add:forks_transitions_def Mprefix_STOP) + +lemma FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_1_dir1: "length fs > 0 \ FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m 1 fs \ (FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m 0 (fs!0))" +proof(unfold FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def, + induct arbitrary:fs rule:fix_ind_k[where k=1 + and f="\ x. (\fs. Mprefix (Tr\<^sub>F 1 fs) (\e. x (Up\<^sub>F fs e)))"]) + case adm:1 + then show ?case by (simp add:cont_fun) +next + case base_k_steps:2 + then show ?case by simp +next + case step:(3 X) + hence "(\if i (fs ! i)) = Tr\<^sub>f 0 (fs ! 0)" by auto + with step show ?case + apply (subst FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec, simp add:forks_state_update_def forks_transitions_def) + apply (intro mono_mprefix_ref, safe) + by (metis ev_fork_idx step.prems list_update_nonempty nth_list_update_eq) +qed + +lemma FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_1_dir2: "length fs > 0 \ (FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m 0 (fs!0)) \ FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m 1 fs" +proof(unfold FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def, + induct arbitrary:fs rule:fix_ind_k[where k=1 + and f="\ x. (\s. Mprefix (Tr\<^sub>f 0 s) (\e. x (Up\<^sub>f 0 s e)))"]) + case adm:1 + then show ?case by (simp add:cont_fun) +next + case base_k_steps:2 + then show ?case by simp +next + case step:(3 X) + have "(\if i (fs ! i)) = Tr\<^sub>f 0 (fs ! 0)" by auto + with step show ?case + apply (subst FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec, simp add:forks_state_update_def forks_transitions_def) + apply (intro mono_mprefix_ref, safe) + by (metis ev_fork_idx step.prems list_update_nonempty nth_list_update_eq) +qed + +lemma FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_1: "length fs > 0 \ (FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m 0 (fs!0)) = FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m 1 fs" + using FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_1_dir1 FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_1_dir2 below_antisym by blast + +lemma FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_unfold: +"0 < n \ length fs = Suc n \ + FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m (Suc n) fs = (FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (butlast fs)|||(FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (fs!n)))" +proof(rule below_antisym) + show "0 < n \ length fs = Suc n \ + FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m (Suc n) fs \ (FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (butlast fs)|||FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (fs!n))" + proof(subst FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def, + induct arbitrary:fs + rule:fix_ind_k[where k=1 + and f="\ x. (\fs. Mprefix (Tr\<^sub>F (Suc n) fs) (\e. x (Up\<^sub>F fs e)))"]) + case adm:1 + then show ?case by (simp add:cont_fun) + next + case base_k_steps:2 + then show ?case by simp + next + case step:(3 X) + have indep:"\s\<^sub>1 s\<^sub>2. Tr\<^sub>F n s\<^sub>1 \ Tr\<^sub>f n s\<^sub>2 = {}" + by (auto simp add:forks_transitions_def fork_transitions_def) + from step show ?case + apply (auto simp add:indep dnorm_inter FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def) + apply (subst fix_eq, simp add:forks_transitions_def Un_commute lessThan_Suc nth_butlast) + proof(rule mono_mprefix_ref, safe, goal_cases) + case (1 e) + from 1(4) have a:"fork e = n" + by (auto simp add:fork_transitions_def split:if_splits) + show ?case + using 1(1)[rule_format, of "(Up\<^sub>F fs e)"] + apply (simp add: 1 a butlast_list_update forks_state_update_def) + by (metis 1(4) ev_fork_idx lessThan_iff less_not_refl) + next + case (2 e m) + hence a:"e \ Tr\<^sub>f n (fs ! n)" + using ev_fork_idx by fastforce + hence c:"Up\<^sub>F fs e ! n = fs ! n" + by (metis 2(4) ev_fork_idx forks_state_update_def nth_list_update_neq) + have d:"Up\<^sub>F (butlast fs) e = butlast (Up\<^sub>F fs e)" + apply(simp add:forks_state_update_def) + by (metis butlast_conv_take forks_state_update_def forks_update_take length_list_update) + from 2 a show ?case + using 2(1)[rule_format, of "(Up\<^sub>F fs e)"] c d forks_state_update_def by auto + qed + qed +next + have indep:"\s\<^sub>1 s\<^sub>2. Tr\<^sub>F n s\<^sub>1 \ Tr\<^sub>f n s\<^sub>2 = {}" + by (auto simp add:forks_transitions_def fork_transitions_def) + show "0 < n \ length fs = Suc n \ + (FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (butlast fs)|||FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (fs!n)) \ FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m (Suc n) fs" + apply (subst FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def, auto simp add:indep dnorm_inter FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def) + proof(rule fix_ind[where + P="\a. 0 < n \ (\x. length x = Suc n \ a (butlast x, x ! n) \ FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m (Suc n) x)", + rule_format], simp_all, goal_cases) + case base:1 + then show ?case by (simp add:cont_fun) + next + case step:(2 X fs) + then show ?case + apply (unfold FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def, subst fix_eq, simp add:forks_transitions_def + Un_commute lessThan_Suc nth_butlast) + proof(rule mono_mprefix_ref, safe, goal_cases) + case (1 e) + from 1(6) have a:"fork e = n" + by (auto simp add:fork_transitions_def split:if_splits) + show ?case + using 1(1)[rule_format, of "(Up\<^sub>F fs e)"] + apply (simp add: 1 a butlast_list_update forks_state_update_def) + using a ev_fork_idx by blast + next + case (2 e m) + have a:"Up\<^sub>F (butlast fs) e = butlast (Up\<^sub>F fs e)" + apply(simp add:forks_state_update_def) + by (metis butlast_conv_take forks_state_update_def forks_update_take length_list_update) + from 2 show ?case + using 2(1)[rule_format, of "(Up\<^sub>F fs e)"] a forks_state_update_def by auto + qed + qed +qed + +lemma ft: "0 < n \ FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (replicate n 0) = foldFORKs n" +proof (induct n, simp) + case (Suc n) + then show ?case + apply (auto simp add: FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_unfold FORK\<^sub>n\<^sub>o\<^sub>r\<^sub>m_is_FORK) + apply (metis Suc_le_D butlast_snoc replicate_Suc replicate_append_same) + by (metis FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_1 One_nat_def leI length_replicate less_Suc0 nth_replicate replicate_Suc) +qed + +corollary FORKs_is_FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m: "FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m N (replicate N 0) = FORKs" + using ft N_pos by simp + +text \The one-philosopher process in normal form:\ + +type_synonym phil_id = nat +type_synonym phil_state = nat + +definition rphil_transitions:: "phil_id \ phil_state \ dining_event set" ("Tr\<^sub>r\<^sub>p") + where "Tr\<^sub>r\<^sub>p i s = ( if s = 0 then {picks i i} + else if s = 1 then {picks i (i-1)} + else if s = 2 then {putsdown i (i-1)} + else if s = 3 then {putsdown i i} + else {})" + +definition lphil0_transitions:: "phil_state \ dining_event set" ("Tr\<^sub>l\<^sub>p") + where "Tr\<^sub>l\<^sub>p s = ( if s = 0 then {picks 0 (N-1)} + else if s = 1 then {picks 0 0} + else if s = 2 then {putsdown 0 0} + else if s = 3 then {putsdown 0 (N-1)} + else {})" + +corollary rphil_phil: "e \ Tr\<^sub>r\<^sub>p i s \ phil e = i" + and lphil0_phil: "e \ Tr\<^sub>l\<^sub>p s \ phil e = 0" + by (simp_all add:rphil_transitions_def lphil0_transitions_def split:if_splits) + +definition rphil_state_update:: "fork_id \ fork_state \ dining_event \ fork_state" ("Up\<^sub>r\<^sub>p") + where "Up\<^sub>r\<^sub>p i s e = ( if e = (picks i i) then 1 + else if e = (picks i (i-1)) then 2 + else if e = (putsdown i (i-1)) then 3 + else 0 )" + +definition lphil0_state_update:: "fork_state \ dining_event \ fork_state" ("Up\<^sub>l\<^sub>p") + where "Up\<^sub>l\<^sub>p s e = ( if e = (picks 0 (N-1)) then 1 + else if e = (picks 0 0) then 2 + else if e = (putsdown 0 0) then 3 + else 0 )" + +definition RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m:: "fork_id \ fork_state \ dining_event process" + where "RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m i = P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\Tr\<^sub>r\<^sub>p i,Up\<^sub>r\<^sub>p i\" + +definition LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m:: "fork_state \ dining_event process" + where "LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m = P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\Tr\<^sub>l\<^sub>p,Up\<^sub>l\<^sub>p\" + +lemma RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec: "RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m i = (\ s. \ e \ (Tr\<^sub>r\<^sub>p i s) \ RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m i (Up\<^sub>r\<^sub>p i s e))" + using fix_eq[of "\ X. (\s. Mprefix (Tr\<^sub>r\<^sub>p i s) (\e. X (Up\<^sub>r\<^sub>p i s e)))"] RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def by simp + +lemma LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec: "LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m = (\ s. \ e \ (Tr\<^sub>l\<^sub>p s) \ LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m (Up\<^sub>l\<^sub>p s e))" + using fix_eq[of "\ X. (\s. Mprefix (Tr\<^sub>l\<^sub>p s) (\e. X (Up\<^sub>l\<^sub>p s e)))"] LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def by simp + +lemma RPHIL_refines_RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m: + assumes i_pos: "i > 0" + shows "RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m i 0 \ RPHIL i" +proof(unfold RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def, + induct rule:fix_ind_k_skip[where k=4 + and f="\ x. (\s. Mprefix (Tr\<^sub>r\<^sub>p i s) (\e. x (Up\<^sub>r\<^sub>p i s e)))"]) + show "(1::nat) \ 4" by simp +next + show "adm (\a. a 0 \ RPHIL i)" by (simp add: cont_fun) +next + case base_k_steps:3 + show ?case (is "\j<4. (iterate j\?f\\) 0 \ RPHIL i") + proof - + have less_2:"\j. (j::nat) < 4 = (j = 0 \ j = 1 \ j = 2 \ j = 3)" by linarith + moreover have "(iterate 0\?f\\) 0 \ RPHIL i" by simp + moreover have "(iterate 1\?f\\) 0 \ RPHIL i" + by (subst RPHIL_rec) + (simp add: write0_def rphil_transitions_def mono_mprefix_ref) + moreover have "(iterate 2\?f\\) 0 \ RPHIL i" + by (subst RPHIL_rec) + (simp add: numeral_2_eq_2 write0_def rphil_transitions_def + rphil_state_update_def mono_mprefix_ref) + moreover have "(iterate 3\?f\\) 0 \ RPHIL i" + by (subst RPHIL_rec) + (simp add: numeral_3_eq_3 write0_def rphil_transitions_def + rphil_state_update_def mono_mprefix_ref minus_suc[OF i_pos]) + ultimately show ?thesis by simp + qed +next + case step:(4 x) + then show ?case (is "(iterate 4\?f\x) 0 \ RPHIL i") + apply (subst RPHIL_rec) + apply (simp add: write0_def numeral_4_eq_4 rphil_transitions_def rphil_state_update_def) + apply (rule mono_mprefix_ref, auto simp:minus_suc[OF i_pos])+ + using minus_suc[OF i_pos] by auto +qed + +lemma LPHIL0_refines_LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m: "LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m 0 \ LPHIL0" +proof(unfold LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def, + induct rule:fix_ind_k_skip[where k=4 and f="\ x. (\s. Mprefix (Tr\<^sub>l\<^sub>p s) (\e. x (Up\<^sub>l\<^sub>p s e)))"]) + show "(1::nat) \ 4" by simp +next + show "adm (\a. a 0 \ LPHIL0)" by (simp add: cont_fun) +next + case base_k_steps:3 + show ?case (is "\j<4. (iterate j\?f\\) 0 \ LPHIL0") + proof - + have less_2:"\j. (j::nat) < 4 = (j = 0 \ j = 1 \ j = 2 \ j = 3)" by linarith + moreover have "(iterate 0\?f\\) 0 \ LPHIL0" by simp + moreover have "(iterate 1\?f\\) 0 \ LPHIL0" + by (subst LPHIL0_rec) + (simp add: write0_def lphil0_transitions_def mono_mprefix_ref) + moreover have "(iterate 2\?f\\) 0 \ LPHIL0" + by (subst LPHIL0_rec) + (simp add: numeral_2_eq_2 write0_def lphil0_transitions_def + lphil0_state_update_def mono_mprefix_ref) + moreover have "(iterate 3\?f\\) 0 \ LPHIL0" + by (subst LPHIL0_rec) + (simp add: numeral_3_eq_3 write0_def lphil0_transitions_def + lphil0_state_update_def mono_mprefix_ref) + ultimately show ?thesis by simp + qed +next + case step:(4 x) + then show ?case (is "(iterate 4\?f\x) 0 \ LPHIL0") + by (subst LPHIL0_rec) + (simp add: write0_def numeral_4_eq_4 lphil0_transitions_def + lphil0_state_update_def mono_mprefix_ref) +qed + +lemma RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m_refines_RPHIL: + assumes i_pos: "i > 0" + shows "RPHIL i \ RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m i 0" +proof(unfold RPHIL_def, + induct rule:fix_ind_k_skip[where k=1]) + show "(1::nat) \ 1" by simp +next + show "adm (\a. a \ RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m i 0)" by simp +next + case base_k_steps:3 + show ?case by simp +next + case step:(4 x) + then show ?case + apply (subst RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec, simp add: write0_def rphil_transitions_def rphil_state_update_def) + apply (rule mono_mprefix_ref, simp) + apply (subst RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec, simp add: write0_def rphil_transitions_def rphil_state_update_def) + apply (rule mono_mprefix_ref, simp add:minus_suc[OF i_pos]) + apply (subst RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec, simp add: write0_def rphil_transitions_def rphil_state_update_def) + apply (rule mono_mprefix_ref, simp add:minus_suc[OF i_pos]) + apply (subst RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec, simp add: write0_def rphil_transitions_def rphil_state_update_def) + apply (rule mono_mprefix_ref, simp add:minus_suc[OF i_pos]) + using minus_suc[OF i_pos] by auto +qed + +lemma LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m_refines_LPHIL0: "LPHIL0 \ LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m 0" +proof(unfold LPHIL0_def, + induct rule:fix_ind_k_skip[where k=1]) + show "(1::nat) \ 1" by simp +next + show "adm (\a. a \ LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m 0)" by simp +next + case base_k_steps:3 + show ?case by simp +next + case step:(4 x) + then show ?case (is "iterate 1\?f\x \ LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m 0") + apply (subst LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec, simp add: write0_def lphil0_transitions_def lphil0_state_update_def) + apply (rule mono_mprefix_ref, simp) + apply (subst LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec, simp add: write0_def lphil0_transitions_def lphil0_state_update_def) + apply (rule mono_mprefix_ref, simp) + apply (subst LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec, simp add: write0_def lphil0_transitions_def lphil0_state_update_def) + apply (rule mono_mprefix_ref, simp) + apply (subst LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec, simp add: write0_def lphil0_transitions_def lphil0_state_update_def) + apply (rule mono_mprefix_ref, simp) + done +qed + +lemma RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m_is_RPHIL: "i > 0 \ RPHIL i = RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m i 0" + using RPHIL_refines_RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m_refines_RPHIL below_antisym by blast + +lemma LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m_is_LPHIL0: "LPHIL0 = LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m 0" + using LPHIL0_refines_LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m_refines_LPHIL0 below_antisym by blast + +subsection \The normal form for the global philosopher network\ + +type_synonym phils_state = "nat list" + +definition phils_transitions:: "nat \ phils_state \ dining_event set" ("Tr\<^sub>P") + where "Tr\<^sub>P n ps = Tr\<^sub>l\<^sub>p (ps!0) \ (\i\{1..< n}. Tr\<^sub>r\<^sub>p i (ps!i))" + +corollary phils_phil: "0 < n \ e \ Tr\<^sub>P n s \ phil e < n" + by (auto simp add:phils_transitions_def lphil0_phil rphil_phil) + +lemma phils_transitions_take: "0 < n \ Tr\<^sub>P n ps = Tr\<^sub>P n (take n ps)" + by (auto simp add:phils_transitions_def) + +definition phils_state_update:: "phils_state \ dining_event \ phils_state" ("Up\<^sub>P") + where "Up\<^sub>P ps e = (let i=(phil e) in if i = 0 then ps[i:=(Up\<^sub>l\<^sub>p (ps!i) e)] + else ps[i:=(Up\<^sub>r\<^sub>p i (ps!i) e)])" + +lemma phils_update_take: "take n (Up\<^sub>P ps e) = Up\<^sub>P (take n ps) e" + by (cases e) (simp_all add: phils_state_update_def lphil0_state_update_def + rphil_state_update_def take_update_swap) + +definition PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m:: "nat \ phils_state \ dining_event process" + where "PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m n = P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\Tr\<^sub>P n,Up\<^sub>P\" + +lemma PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec: "PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m n = (\ ps. \ e \ (Tr\<^sub>P n ps) \ PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (Up\<^sub>P ps e))" + using fix_eq[of "\ X. (\ps. Mprefix (Tr\<^sub>P n ps) (\e. X (Up\<^sub>P ps e)))"] PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def by simp + +lemma PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_1_dir1: "length ps > 0 \ PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m 1 ps \ (LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m (ps!0))" +proof(unfold PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def, + induct arbitrary:ps + rule:fix_ind_k[where k=1 + and f="\ x. (\ps. Mprefix (Tr\<^sub>P 1 ps) (\e. x (Up\<^sub>P ps e)))"]) + case adm:1 + then show ?case by (simp add:cont_fun) +next + case base_k_steps:2 + then show ?case by simp +next + case step:(3 X) + then show ?case + apply (subst LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec, simp add:phils_state_update_def phils_transitions_def) + proof (intro mono_mprefix_ref, safe, goal_cases) + case (1 e) + with 1(2) show ?case + using 1(1)[rule_format, of "ps[0 := Up\<^sub>l\<^sub>p (ps ! 0) e]"] + by (simp add:lphil0_transitions_def split:if_splits) + qed +qed + +lemma PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_1_dir2: "length ps > 0 \ (LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m (ps!0)) \ PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m 1 ps" +proof(unfold LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def, + induct arbitrary:ps rule:fix_ind_k[where k=1 + and f="\ x. (\s. Mprefix (Tr\<^sub>l\<^sub>p s) (\e. x (Up\<^sub>l\<^sub>p s e)))"]) + case adm:1 + then show ?case by (simp add:cont_fun) +next + case base_k_steps:2 + then show ?case by simp +next + case step:(3 X) + then show ?case + apply (subst PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_rec, simp add:phils_state_update_def phils_transitions_def) + proof (intro mono_mprefix_ref, safe, goal_cases) + case (1 e) + with 1(2) show ?case + using 1(1)[rule_format, of "ps[0 := Up\<^sub>l\<^sub>p (ps ! 0) e]"] + by (simp add:lphil0_transitions_def split:if_splits) + qed +qed + +lemma PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_1: "length ps > 0 \ PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m 1 ps = (LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m (ps!0))" + using PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_1_dir1 PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_1_dir2 below_antisym by blast + +lemma PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_unfold: + assumes n_pos:"0 < n" + shows "length ps = Suc n \ + PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m (Suc n) ps = (PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (butlast ps)|||(RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (ps!n)))" +proof(rule below_antisym) + show "length ps = Suc n \ PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m (Suc n) ps \ (PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (butlast ps)|||RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (ps!n))" + proof(subst PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def, + induct arbitrary:ps + rule:fix_ind_k[where k=1 + and f="\ x. (\ps. Mprefix (Tr\<^sub>P (Suc n) ps) (\e. x (Up\<^sub>P ps e)))"]) + case adm:1 + then show ?case by (simp add:cont_fun) + next + case base_k_steps:2 + then show ?case by simp + next + case step:(3 X) + have indep:"\s\<^sub>1 s\<^sub>2. Tr\<^sub>P n s\<^sub>1 \ Tr\<^sub>r\<^sub>p n s\<^sub>2 = {}" + using phils_phil rphil_phil n_pos by blast + from step have tra:"(Tr\<^sub>P (Suc n) ps) =(Tr\<^sub>P n (butlast ps) \ Tr\<^sub>r\<^sub>p n (ps ! n))" + by (auto simp add:n_pos phils_transitions_def nth_butlast Suc_leI + atLeastLessThanSuc Un_commute Un_assoc) + from step show ?case + apply (auto simp add:indep dnorm_inter PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def) + apply (subst fix_eq, auto simp add:tra) + proof(rule mono_mprefix_ref, safe, goal_cases) + case (1 e) + hence c:"Up\<^sub>P ps e ! n = ps ! n" + using 1(3) phils_phil phils_state_update_def step n_pos + by (cases "phil e", auto) (metis exists_least_iff nth_list_update_neq) + have d:"Up\<^sub>P (butlast ps) e = butlast (Up\<^sub>P ps e)" + by (cases "phil e", auto simp add:phils_state_update_def butlast_list_update + lphil0_state_update_def rphil_state_update_def) + have e:"length (Up\<^sub>P ps e) = Suc n" + by (metis (full_types) step(2) length_list_update phils_state_update_def) + from 1 show ?case + using 1(1)[rule_format, of "(Up\<^sub>P ps e)"] c d e by auto + next + case (2 e) + have e:"length (Up\<^sub>P ps e) = Suc n" + by (metis (full_types) step(2) length_list_update phils_state_update_def) + from 2 show ?case + using 2(1)[rule_format, of "(Up\<^sub>P ps e)", OF e] n_pos + apply(auto simp add: butlast_list_update rphil_phil phils_state_update_def) + by (meson disjoint_iff_not_equal indep) + qed + qed +next + have indep:"\s\<^sub>1 s\<^sub>2. Tr\<^sub>P n s\<^sub>1 \ Tr\<^sub>r\<^sub>p n s\<^sub>2 = {}" + using phils_phil rphil_phil using n_pos by blast + + show "length ps = Suc n \ (PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (butlast ps)|||RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (ps!n)) \ PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m (Suc n) ps" + apply (subst PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def, auto simp add:indep dnorm_inter RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def) + proof(rule fix_ind[where + P="\a. \x. length x = Suc n \ a (butlast x, x ! n) \ PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m (Suc n) x", rule_format], + simp_all, goal_cases base step) + case base + then show ?case by (simp add:cont_fun) + next + case (step X ps) + hence tra:"(Tr\<^sub>P (Suc n) ps) =(Tr\<^sub>P n (butlast ps) \ Tr\<^sub>r\<^sub>p n (ps ! n))" + by (auto simp add:n_pos phils_transitions_def nth_butlast + Suc_leI atLeastLessThanSuc Un_commute Un_assoc) + from step show ?case + apply (auto simp add:indep dnorm_inter PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def) + apply (subst fix_eq, auto simp add:tra) + proof(rule mono_mprefix_ref, safe, goal_cases) + case (1 e) + hence c:"Up\<^sub>P ps e ! n = ps ! n" + using 1(3) phils_phil phils_state_update_def step n_pos + by (cases "phil e", auto) (metis exists_least_iff nth_list_update_neq) + have d:"Up\<^sub>P (butlast ps) e = butlast (Up\<^sub>P ps e)" + by (cases "phil e", auto simp add:phils_state_update_def butlast_list_update + lphil0_state_update_def rphil_state_update_def) + have e:"length (Up\<^sub>P ps e) = Suc n" + by (metis (full_types) step(3) length_list_update phils_state_update_def) + from 1 show ?case + using 1(2)[rule_format, of "(Up\<^sub>P ps e)", OF e] c d by auto + next + case (2 e) + have e:"length (Up\<^sub>P ps e) = Suc n" + by (metis (full_types) 2(3) length_list_update phils_state_update_def) + from 2 show ?case + using 2(2)[rule_format, of "(Up\<^sub>P ps e)", OF e] n_pos + apply(auto simp add: butlast_list_update rphil_phil phils_state_update_def) + by (meson disjoint_iff_not_equal indep) + qed + qed +qed + +lemma pt: "0 < n \ PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (replicate n 0) = foldPHILs n" +proof (induct n, simp) + case (Suc n) + then show ?case + apply (auto simp add: PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_unfold LPHIL0\<^sub>n\<^sub>o\<^sub>r\<^sub>m_is_LPHIL0) + apply (metis Suc_le_eq butlast.simps(2) butlast_snoc RPHIL\<^sub>n\<^sub>o\<^sub>r\<^sub>m_is_RPHIL + nat_neq_iff replicate_append_same replicate_empty) + by (metis One_nat_def leI length_replicate less_Suc0 PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_1 nth_Cons_0 replicate_Suc) +qed + +corollary PHILs_is_PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m: "PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m N (replicate N 0) = PHILs" + using pt N_pos by simp + +subsection \The complete process system under normal form\ + +definition dining_transitions:: "nat \ phils_state \ forks_state \ dining_event set" ("Tr\<^sub>D") + where "Tr\<^sub>D n = (\(ps,fs). (Tr\<^sub>P n ps) \ (Tr\<^sub>F n fs))" + +definition dining_state_update:: + "phils_state \ forks_state \ dining_event \ phils_state \ forks_state" ("Up\<^sub>D") + where "Up\<^sub>D = (\(ps,fs) e. (Up\<^sub>P ps e, Up\<^sub>F fs e))" + +definition DINING\<^sub>n\<^sub>o\<^sub>r\<^sub>m:: "nat \ phils_state \ forks_state \ dining_event process" + where "DINING\<^sub>n\<^sub>o\<^sub>r\<^sub>m n = P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\Tr\<^sub>D n, Up\<^sub>D\" + +lemma ltsDining_rec: "DINING\<^sub>n\<^sub>o\<^sub>r\<^sub>m n = (\ s. \ e \ (Tr\<^sub>D n s) \ DINING\<^sub>n\<^sub>o\<^sub>r\<^sub>m n (Up\<^sub>D s e))" + using fix_eq[of "\ X. (\s. Mprefix (Tr\<^sub>D n s) (\e. X (Up\<^sub>D s e)))"] DINING\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def by simp + +lemma DINING_is_DINING\<^sub>n\<^sub>o\<^sub>r\<^sub>m: "DINING = DINING\<^sub>n\<^sub>o\<^sub>r\<^sub>m N (replicate N 0, replicate N 0)" +proof - + have "DINING\<^sub>n\<^sub>o\<^sub>r\<^sub>m N (replicate N 0, replicate N 0) = + (PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m N (replicate N 0) || FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m N (replicate N 0))" + unfolding DINING\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def dining_transitions_def + dining_state_update_def dnorm_par by simp + thus ?thesis + using PHILs_is_PHILs\<^sub>n\<^sub>o\<^sub>r\<^sub>m FORKs_is_FORKs\<^sub>n\<^sub>o\<^sub>r\<^sub>m DINING_def + by (simp add: par_comm) +qed + +subsection \And finally: Philosophers may dine ! Always !\ + +corollary lphil_states:"Up\<^sub>l\<^sub>p r e = 0 \ Up\<^sub>l\<^sub>p r e = 1 \ Up\<^sub>l\<^sub>p r e = 2 \ Up\<^sub>l\<^sub>p r e = 3" + and rphil_states:"Up\<^sub>r\<^sub>p i r e = 0 \ Up\<^sub>r\<^sub>p i r e = 1 \ Up\<^sub>r\<^sub>p i r e = 2 \ Up\<^sub>r\<^sub>p i r e = 3" + unfolding lphil0_state_update_def rphil_state_update_def by auto + +lemma dining_events: +"e \ Tr\<^sub>D N s \ + (\i\{1.. e = picks i (i-1) \ e = putsdown i i \ e = putsdown i (i-1)) + \ (e = picks 0 0 \ e = picks 0 (N-1) \ e = putsdown 0 0 \ e = putsdown 0 (N-1))" + by (auto simp add:dining_transitions_def phils_transitions_def rphil_transitions_def + lphil0_transitions_def split:prod.splits if_splits) + +definition "inv_dining ps fs \ + (\i. Suc i < N \ ((fs!(Suc i) = 1) \ ps!Suc i \ 0)) \ (fs!(N-1) = 2 \ ps!0 \ 0) + \ (\i < N - 1. fs!i = 2 \ ps!Suc i = 2) \ (fs!0 = 1 \ ps!0 = 2) + \ (\i < N. fs!i = 0 \ fs!i = 1 \ fs!i = 2) + \ (\i < N. ps!i = 0 \ ps!i = 1 \ ps!i = 2 \ ps!i = 3) + \ length fs = N \ length ps = N" + +lemma inv_DINING: "s \ \ (Tr\<^sub>D N) Up\<^sub>D (replicate N 0, replicate N 0) \ inv_dining (fst s) (snd s)" +proof(induct rule:\.induct) + case rbase + show ?case + unfolding inv_dining_def + by (simp add:dining_transitions_def phils_transitions_def forks_transitions_def + lphil0_transitions_def rphil_transitions_def fork_transitions_def) +next + case (rstep s e) + from rstep(2,3) show ?case + apply(auto simp add:dining_transitions_def phils_transitions_def forks_transitions_def + lphil0_transitions_def rphil_transitions_def fork_transitions_def + lphil0_state_update_def rphil_state_update_def fork_state_update_def + dining_state_update_def phils_state_update_def forks_state_update_def + split:if_splits prod.split) + unfolding inv_dining_def + proof(goal_cases) + case (1 ps fs) + then show ?case + by (simp add:nth_list_update) force + next + case (2 ps fs) + then show ?case + by (auto simp add:nth_list_update) + next + case (3 ps fs) + then show ?case + using N_g1 by linarith + next + case (4 ps fs) + then show ?case + by (simp add:nth_list_update) force + next + case (5 ps fs) + then show ?case + using N_g1 by linarith + next + case (6 ps fs) + then show ?case + by (auto simp add:nth_list_update) + next + case (7 ps fs i) + then show ?case + apply (simp add:nth_list_update, intro impI conjI, simp_all) + by auto[1] (metis N_pos Suc_pred less_antisym, metis zero_neq_numeral) + next + case (8 ps fs i) + then show ?case + apply (simp add:nth_list_update, intro impI conjI allI, simp_all) + by (metis "8"(1) zero_neq_one)+ + next + case (9 ps fs i) + then show ?case + apply (simp add:nth_list_update, intro impI conjI allI, simp_all) + by (metis N_pos Suc_pred less_antisym) (metis n_not_Suc_n numeral_2_eq_2) + next + case (10 ps fs i) + then show ?case + apply (simp add:nth_list_update, intro impI conjI allI, simp_all) + by (metis "10"(1) "10"(5) One_nat_def n_not_Suc_n numeral_2_eq_2)+ + qed +qed + +lemma inv_implies_DF:"inv_dining ps fs \ Tr\<^sub>D N (ps, fs) \ {}" + unfolding inv_dining_def + apply(simp add:dining_transitions_def phils_transitions_def forks_transitions_def + lphil0_transitions_def + split: if_splits prod.splits) +proof(elim conjE, intro conjI impI, goal_cases) + case 1 + hence "putsdown 0 (N - Suc 0) \ (\if i (fs ! i))" + by (auto simp add:fork_transitions_def) + then show ?case + by blast +next + case 2 + hence "putsdown 0 0 \ (\if i (fs ! i))" + by (auto simp add:fork_transitions_def) + then show ?case + by (simp add:fork_transitions_def) force +next + case 3 + hence a:"fs!0 = 0 \ picks 0 0 \ (\if i (fs ! i))" + by (auto simp add:fork_transitions_def) + from 3 have b1:"ps!1 = 2 \ putsdown 1 0 \ (\x\{Suc 0..r\<^sub>p x (ps ! x))" + using N_g1 by (auto simp add:rphil_transitions_def) + from 3 have b2:"fs!0 = 2 \ putsdown 1 0 \ Tr\<^sub>f 0 (fs ! 0)" + using N_g1 by (auto simp add:fork_transitions_def) fastforce + from 3 have c:"fs!0 \ 0 \ ps!1 = 2" + by (metis N_pos N_pos_simps(3) One_nat_def diff_is_0_eq neq0_conv) + from 3 have d:"fs!0 \ 0 \ fs!0 = 2" + using N_pos by meson + then show ?case + apply(cases "fs!0 = 0") + using a apply (simp add: fork_transitions_def Un_insert_left) + using b1[OF c] b2[OF d] N_pos by blast +next + case 4 + then show ?case + using 4(5)[rule_format, of 0, OF N_pos] apply(elim disjE) + proof(goal_cases) + case 41:1 (* fs!0 = 0 *) + then show ?case + using 4(5)[rule_format, of 1, OF N_g1] apply(elim disjE) + proof(goal_cases) + case 411:1 (* fs!1 = 0 *) + from 411 have a0: "ps!1 = 0" + by (metis N_g1 One_nat_def neq0_conv) + from 411 have a1: "picks 1 1 \ (\if i (fs ! i))" + apply (auto simp add:fork_transitions_def) + by (metis (mono_tags, lifting) N_g1 Int_Collect One_nat_def lessThan_iff) + from 411 have a2: "ps!1 = 0 \ picks 1 1 \ (\i\{Suc 0..r\<^sub>p i (ps ! i))" + apply (auto simp add:rphil_transitions_def) + using N_g1 by linarith + from 411 show ?case + using a0 a1 a2 by blast + next + case 412:2 (* fs!1 = 1 *) + hence "ps!1 = 1 \ ps!1 = 3" + by (metis N_g1 One_nat_def less_numeral_extra(3) zero_less_diff) + with 412 show ?case + proof(elim disjE, goal_cases) + case 4121:1 (* ps!1 = 1 *) + from 4121 have b1: "picks 1 0 \ (\if i (fs ! i))" + apply (auto simp add:fork_transitions_def) + by (metis (full_types) Int_Collect N_g1 N_pos One_nat_def lessThan_iff mod_less) + from 4121 have b2: "picks 1 0 \ (\i\{Suc 0..r\<^sub>p i (ps ! i))" + apply (auto simp add:rphil_transitions_def) + using N_g1 by linarith + from 4121 show ?case + using b1 b2 by blast + next + case 4122:2 (* ps!1 = 3 *) + from 4122 have b3: "putsdown 1 1 \ (\if i (fs ! i))" + apply (auto simp add:fork_transitions_def) + using N_g1 by linarith + from 4122 have b4: "putsdown 1 1 \ (\i\{Suc 0..r\<^sub>p i (ps ! i))" + apply (auto simp add:rphil_transitions_def) + using N_g1 by linarith + then show ?case + using b3 b4 by blast + qed + next + case 413:3 (* fs!1 = 2 *) + then show ?case + proof(cases "N = 2") + case True + with 413 show ?thesis by simp + next + case False + from False 413 have c0: "ps!2 = 2" + by (metis N_g1 Suc_1 Suc_diff_1 nat_neq_iff not_gr0 zero_less_diff) + from False 413 have c1: "putsdown 2 1 \ (\if i (fs ! i))" + apply (auto simp add:fork_transitions_def) + using N_g1 apply linarith + using N_g1 by auto + from False 413 have c2: "ps!2 = 2 \ putsdown 2 1 \ (\i\{Suc 0..r\<^sub>p i (ps ! i))" + apply (auto simp add:rphil_transitions_def) + using N_g1 by linarith + from 413 False show ?thesis + using c0 c1 c2 by blast + qed + qed + next + case 42:2 (* fs!0 = 1 *) + then show ?case by blast + next + case 43:3 (* fs!0 = 2*) + from 43 have d0: "ps!1 = 2" + by (metis One_nat_def gr0I) + from 43 have d1: "putsdown 1 0 \ (\if i (fs ! i))" + by (auto simp add:fork_transitions_def) + from 43 have d2: "ps!1 = 2 \ putsdown 1 0 \ (\i\{Suc 0..r\<^sub>p i (ps ! i))" + apply (auto simp add:rphil_transitions_def) + using N_g1 by linarith + from 43 show ?case + using d0 d1 d2 by blast + qed +next + case 5 + then show ?case + using 5(6)[rule_format, of 0] by simp +qed + +corollary DF_DINING: "deadlock_free_v2 DINING" + unfolding DINING_is_DINING\<^sub>n\<^sub>o\<^sub>r\<^sub>m DINING\<^sub>n\<^sub>o\<^sub>r\<^sub>m_def + using inv_DINING inv_implies_DF by (subst deadlock_free_dnorm) auto + +end + +end + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/thys/CSP_RefTK/Fix_ind_ext.thy b/thys/CSP_RefTK/Fix_ind_ext.thy new file mode 100644 --- /dev/null +++ b/thys/CSP_RefTK/Fix_ind_ext.thy @@ -0,0 +1,142 @@ +(*<*) +\\ ******************************************************************** + * Project : CSP-RefTK - A Refinement Toolkit for HOL-CSP + * Version : 1.0 + * + * Author : Burkhart Wolff, Safouan Taha, Lina Ye. + * + * This file : More Fixpoint and k-Induction Schemata + * + * Copyright (c) 2020 Université Paris-Saclay, France + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * * Neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************\ +(*>*) + +chapter \ Advanced Induction Schemata \ + +theory Fix_ind_ext + +imports HOLCF + +begin + +section\k-fixpoint-induction\ + +lemma nat_k_induct: + fixes k::nat + assumes "\in\<^sub>0. (\i0+i)) \ P (n\<^sub>0+k)" + shows "P (n::nat)" +proof(induct rule:nat_less_induct) + case (1 n) + then show ?case + apply(cases "n < k") + using assms(1) apply blast + using assms(2)[rule_format, of "n-k"] by auto +qed + +thm fix_ind fix_ind2 + +lemma fix_ind_k: + fixes k::nat + assumes adm: "adm P" + assumes base_k_steps: "\if\\)" + assumes step: "\x. (\if\x)) \ P (iterate k\f\x)" + shows "P (fix\f)" + unfolding fix_def2 apply (rule admD [OF adm chain_iterate]) + apply(rule nat_k_induct[of k], simp add: base_k_steps) + using step by (subst (1 2) add.commute, unfold iterate_iterate[symmetric]) blast + +lemma nat_k_skip_induct: + fixes k::nat + assumes "k \ 1" and "\in\<^sub>0. P (n\<^sub>0) \ P (n\<^sub>0+k)" + shows "P (n::nat)" +proof(induct rule:nat_less_induct) + case (1 n) + then show ?case + apply(cases "n < k") + using assms(2) apply blast + using assms(3)[rule_format, of "n-k"] assms(1) by auto +qed + +lemma fix_ind_k_skip: + fixes k::nat + assumes k_1: "k \ 1" + assumes adm: "adm P" + assumes base_k_steps: "\if\\)" + assumes step: "\x. P x \ P (iterate k\f\x)" + shows "P (fix\f)" + unfolding fix_def2 apply (rule admD [OF adm chain_iterate]) + apply(rule nat_k_skip_induct[of k]) + using k_1 base_k_steps apply auto + using step by (subst add.commute, unfold iterate_iterate[symmetric]) blast + +thm parallel_fix_ind + +section\Parallel fixpoint-induction\ + +lemma parallel_fix_ind_inc: + assumes adm: "adm (\x. P (fst x) (snd x))" + assumes base_fst: "\y. P \ y" and base_snd: "\x. P x \" + assumes step: "\x y. P x y \ P (G\x) y \ P x (H\y) \ P (G\x) (H\y)" + shows "P (fix\G) (fix\H)" +proof - + from adm have adm': "adm (case_prod P)" + unfolding split_def . + have "P (iterate i\G\\) (iterate j\H\\)" for i j + proof(induct "i+j" arbitrary:i j rule:nat_less_induct) + case 1 + { fix i' j' + assume i:"i = Suc i'" and j:"j = Suc j'" + have "P (iterate i'\G\\) (iterate j'\H\\)" + and "P (iterate i'\G\\) (iterate j\H\\)" + and "P (iterate i\G\\) (iterate j'\H\\)" + using "1.hyps" add_strict_mono i j apply blast + using "1.hyps" i apply auto[1] + using "1.hyps" j by auto + hence ?case by (simp add: i j step) + } + thus ?case + apply(cases i, simp add:base_fst) + apply(cases j, simp add:base_snd) + by assumption + qed + then have "\i. case_prod P (iterate i\G\\, iterate i\H\\)" + by simp + then have "case_prod P (\i. (iterate i\G\\, iterate i\H\\))" + by - (rule admD [OF adm'], simp, assumption) + then have "P (\i. iterate i\G\\) (\i. iterate i\H\\)" + by (simp add: lub_Pair) + then show "P (fix\G) (fix\H)" + by (simp add: fix_def2) +qed + +end \ No newline at end of file diff --git a/thys/CSP_RefTK/Introduction.thy b/thys/CSP_RefTK/Introduction.thy new file mode 100644 --- /dev/null +++ b/thys/CSP_RefTK/Introduction.thy @@ -0,0 +1,123 @@ +(*<*) +\\ ******************************************************************** + * Project : CSP-RefTK - A Refinement Toolkit for HOL-CSP + * Version : 1.0 + * + * Author : Burkhart Wolff, Safouan Taha, Lina Ye. + * + * This file : An Introduction + * + * Copyright (c) 2020 Université Paris-Saclay, France + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * * Neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************\ +(*>*) + +chapter\Context\ +(*<*) +theory Introduction + imports HOLCF +begin +(*>*) + +section\Introduction\ + +text\ +Communicating Sequential Processes CSP is a language +to specify and verify patterns of interaction of concurrent systems. +Together with CCS and LOTOS, it belongs to the family of \<^emph>\process algebras\. +CSP's rich theory comprises denotational, operational and algebraic semantic facets +and has influenced programming languages such as Limbo, Crystal, Clojure and +most notably Golang @{cite "donovan2015go"}. CSP has been applied in +industry as a tool for specifying and verifying the concurrent aspects of hardware +systems, such as the T9000 transputer @{cite "Barret95"}. + +The theory of CSP, in particular the denotational Failure/Divergence Denotational Semantics, +has been initially proposed in the book by Tony Hoare @{cite "Hoare:1985:CSP:3921"}, but evolved +substantially since @{cite "BrookesHR84" and "brookes-roscoe85" and "roscoe:csp:1998"}. + +Verification of CSP properties has been centered around the notion of \<^emph>\process refinement orderings\, +most notably \_\\<^sub>F\<^sub>D_\ and \_\_\. The latter turns the denotational domain of CSP into a Scott cpo +@{cite "scott:cpo:1972"}, which yields semantics for the fixed point operator \\x. f(x)\ provided +that \f\ is continuous with respect to \_\_\. Since it is possible to express deadlock-freeness and +livelock-freeness as a refinement problem, the verification of properties has been reduced +traditionally to a model-checking problem for a finite set of events \A\. + +We are interested in verification techniques for arbitrary event sets \A\ or arbitrarily +parameterized processes. Such processes can be used to model dense-timed processes, processes +with dynamic thread creation, and processes with unbounded thread-local variables and buffers. +Events may even be higher-order objects such as functions or again processes, paving the way +for the modeling of re-programmable compute servers or dynamic distributed computing architectures. +However, this adds substantial complexity to the process theory: when it comes to study the +interplay of different denotational models, refinement-orderings, and side-conditions for +continuity, paper-and-pencil proofs easily reach their limits of precision. + +Several attempts have been undertaken to develop the formal theory of CSP in an interactive proof system, +mostly in Isabelle/HOL @{cite "Camilleri91" and "tej.ea:corrected:1997" and "IsobeRoggenbach2010"}. +This work is based on the most recent instance in this line, HOL-CSP 2.0, which has been published +as AFP submission @{cite "HOL-CSP-AFP"} and whose development is hosted at +\<^url>\https://gitlri.lri.fr/burkhart.wolff/hol-csp2.0\. + +The present AFP Module is an add-on on this work and develops some support for +\<^enum> advanced induction schemes (mutual fixed-point Induction, K-induction), +\<^enum> bridge-Lemmas between the classical refinement relations in the FD-semantics, + which allow for reduced refinement proof complexity in certain cases, and +\<^enum> a theory of explicit state normalisation which allows for proofs over certain + communicating networks of arbitrary size. + +\newpage +\ + + + +section\The Global Architecture of CSP\_RefTk\ +text\ +\begin{figure}[ht] + \centering + \includegraphics[width=0.60\textwidth]{figures/session_graph.pdf} + \caption{The overall architecture: HOLCF, HOL-CSP, and CSP\_RefTk} + \label{fig:fig1} +\end{figure} +\ + +text\The global architecture of CSP\_RefTk is shown in \autoref{fig:fig1}. +The entire package resides on: +\<^enum> \<^session>\HOL-Eisbach\ from the Isabelle/HOL distribution, +\<^enum> \<^session>\HOLCF\ from the Isabelle/HOL distribution, and +\<^enum> \<^session>\HOL-CSP\ 2.0 from the Isabelle Archive of Formal Proofs. + +\<^noindent> The theories \<^verbatim>\Assertion_ext\ and \<^verbatim>\Fixind_ext\ are extensions of the +corresponding theories in \<^session>\HOL-CSP\.\ + + +(*<*) +end +(*>*) diff --git a/thys/CSP_RefTK/Process_norm.thy b/thys/CSP_RefTK/Process_norm.thy new file mode 100644 --- /dev/null +++ b/thys/CSP_RefTK/Process_norm.thy @@ -0,0 +1,241 @@ +(*<*) +\\ ******************************************************************** + * Project : CSP-RefTK - A Refinement Toolkit for HOL-CSP + * Version : 1.0 + * + * Author : Burkhart Wolff, Safouan Taha, Lina Ye. + * + * This file : A Normalization Theory + * + * Copyright (c) 2020 Université Paris-Saclay, France + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * * Neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************\ +(*>*) + +chapter\ Normalisation of Deterministic CSP Processes \ + +theory Process_norm + +imports "Properties" "Fix_ind_ext" + +begin + +section\Deterministic normal-forms with explicit state\ + +abbreviation "P_dnorm Tr Up \ (\ X. (\ s. \ e \ (Tr s) \ X (Up s e)))" + +notation P_dnorm ("P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\_,_\" 60) + +lemma dnorm_cont[simp]: + fixes Tr::"'state::type \ 'event::type set" and Up::"'state \ 'event \ 'state" + shows "cont (\X. (\s. \ e \ (Tr s) \ X (Ur s e)))" (is "cont ?f") +proof - + have "cont (\X. ?f X s)" for s by (simp add:cont_fun) + then show ?thesis by simp +qed + +section\Interleaving product lemma\ + +lemma dnorm_inter: + fixes Tr\<^sub>1 ::"'state\<^sub>1::type \ 'event::type set" and Tr\<^sub>2::"'state\<^sub>2::type \ 'event set" + and Up\<^sub>1 ::"'state\<^sub>1 \ 'event \ 'state\<^sub>1" and Up\<^sub>2::"'state\<^sub>2 \ 'event \ 'state\<^sub>2" + defines P: "P \ P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\Tr\<^sub>1,Up\<^sub>1\" (is "P \ fix\(\ X. ?P X)") + defines Q: "Q \ P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\Tr\<^sub>2,Up\<^sub>2\" (is "Q \ fix\(\ X. ?Q X)") + + assumes indep: \\s\<^sub>1 s\<^sub>2. Tr\<^sub>1 s\<^sub>1 \ Tr\<^sub>2 s\<^sub>2 = {}\ + + defines Tr: "Tr \ (\(s\<^sub>1,s\<^sub>2). Tr\<^sub>1 s\<^sub>1 \ Tr\<^sub>2 s\<^sub>2)" + defines Up: "Up \ (\(s\<^sub>1,s\<^sub>2) e. if e \ Tr\<^sub>1 s\<^sub>1 then (Up\<^sub>1 s\<^sub>1 e,s\<^sub>2) + else if e \ Tr\<^sub>2 s\<^sub>2 then (s\<^sub>1, Up\<^sub>2 s\<^sub>2 e) + else (s\<^sub>1,s\<^sub>2))" + defines S: "S \ P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\Tr,Up\" (is "S \ fix\(\ X. ?S X)") + + shows "(P s\<^sub>1 ||| Q s\<^sub>2) = S (s\<^sub>1,s\<^sub>2)" +proof - + have P_rec: "P = ?P P" using fix_eq[of "(\ X. ?P X)"] P by simp + have Q_rec: "Q = ?Q Q" using fix_eq[of "(\ X. ?Q X)"] Q by simp + have S_rec: "S = ?S S" using fix_eq[of "(\ X. ?S X)"] S by simp + have dir1: "\ s\<^sub>1 s\<^sub>2. (P s\<^sub>1 ||| Q s\<^sub>2) \ S (s\<^sub>1, s\<^sub>2)" + proof(subst P, subst Q, + induct rule:parallel_fix_ind_inc[of "\x y. \ s\<^sub>1 s\<^sub>2. (x s\<^sub>1 ||| y s\<^sub>2) \ S (s\<^sub>1,s\<^sub>2)"]) + case adm:1 + then show ?case + by (intro adm_all adm_below) (simp_all add: cont2cont_fun) + next + case base_fst:(2 y) + then show ?case by (metis Inter_commute app_strict minimal par_Int_bot) + next + case base_snd:(3 x) + then show ?case by (simp add: par_Int_bot) + next + case step:(4 x y) + then show ?case (is "\ s\<^sub>1 s\<^sub>2. ?C s\<^sub>1 s\<^sub>2") + proof(intro allI) + fix s\<^sub>1 s\<^sub>2 + show "?C s\<^sub>1 s\<^sub>2" + apply(simp) + apply(subst mprefix_Par_Int[where C="{}", simplified]) + apply(subst S_rec, simp add: Tr Up mprefix_Un_distr) + apply(intro mono_det_ref mono_mprefix_ref) + using step(3)[simplified] indep apply simp + using step(2)[simplified] indep by fastforce + qed + qed + have dir2: "\ s\<^sub>1 s\<^sub>2. S (s\<^sub>1, s\<^sub>2) \ (P s\<^sub>1 ||| Q s\<^sub>2)" + proof(subst S, induct rule:fix_ind_k[of "\x. \ s\<^sub>1 s\<^sub>2. x (s\<^sub>1,s\<^sub>2) \ (P s\<^sub>1 ||| Q s\<^sub>2)" 1]) + case adm:1 + show ?case by (intro adm_all adm_below) (simp_all add: cont_fun) + next + case base_k_steps:2 + then show ?case by simp + next + case step:(3 x) + then show ?case (is "\ s\<^sub>1 s\<^sub>2. ?C s\<^sub>1 s\<^sub>2") + proof(intro allI) + fix s\<^sub>1 s\<^sub>2 + have P_rec_sym:"Mprefix (Tr\<^sub>1 s\<^sub>1) (\e. P (Up\<^sub>1 s\<^sub>1 e)) = P s\<^sub>1" using P_rec by metis + have Q_rec_sym:"Mprefix (Tr\<^sub>2 s\<^sub>2) (\e. Q (Up\<^sub>2 s\<^sub>2 e)) = Q s\<^sub>2" using Q_rec by metis + show "?C s\<^sub>1 s\<^sub>2" + apply(simp add: Tr Up mprefix_Un_distr) + apply(subst P_rec, subst Q_rec, subst mprefix_Par_Int[where C="{}", simplified]) + apply(intro mono_det_ref mono_mprefix_ref) + apply(subst Q_rec_sym, simp add:step[simplified]) + apply(subst P_rec_sym) using step[simplified] indep by fastforce + qed + qed + from dir1 dir2 show ?thesis using below_antisym by blast +qed + +section \Synchronous product lemma\ +lemma dnorm_par: + fixes Tr\<^sub>1 ::"'state\<^sub>1::type \ 'event::type set" and Tr\<^sub>2::"'state\<^sub>2::type \ 'event set" + and Up\<^sub>1 ::"'state\<^sub>1 \ 'event \ 'state\<^sub>1" and Up\<^sub>2::"'state\<^sub>2 \ 'event \ 'state\<^sub>2" + defines P: "P \ P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\Tr\<^sub>1,Up\<^sub>1\" (is "P \ fix\(\ X. ?P X)") + defines Q: "Q \ P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\Tr\<^sub>2,Up\<^sub>2\" (is "Q \ fix\(\ X. ?Q X)") + + defines Tr: "Tr \ (\(s\<^sub>1,s\<^sub>2). Tr\<^sub>1 s\<^sub>1 \ Tr\<^sub>2 s\<^sub>2)" + defines Up: "Up \ (\(s\<^sub>1,s\<^sub>2) e. (Up\<^sub>1 s\<^sub>1 e, Up\<^sub>2 s\<^sub>2 e))" + defines S: "S \ P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\Tr,Up\" (is "S \ fix\(\ X. ?S X)") + + shows "(P s\<^sub>1 || Q s\<^sub>2) = S (s\<^sub>1,s\<^sub>2)" +proof - + have P_rec: "P = ?P P" using fix_eq[of "(\ X. ?P X)"] P by simp + have Q_rec: "Q = ?Q Q" using fix_eq[of "(\ X. ?Q X)"] Q by simp + have S_rec: "S = ?S S" using fix_eq[of "(\ X. ?S X)"] S by simp + have dir1: "\ s\<^sub>1 s\<^sub>2. (P s\<^sub>1 || Q s\<^sub>2) \ S (s\<^sub>1, s\<^sub>2)" + proof(subst P, subst Q, + induct rule:parallel_fix_ind[of "\x y. \ s\<^sub>1 s\<^sub>2. (x s\<^sub>1 || y s\<^sub>2) \ S (s\<^sub>1,s\<^sub>2)"]) + case adm:1 + then show ?case + by (intro adm_all adm_below) (simp_all add: cont2cont_fun) + next + case base:2 + then show ?case by (simp add: par_Int_bot) + next + case step:(3 x y) + then show ?case (is "\ s\<^sub>1 s\<^sub>2. ?C s\<^sub>1 s\<^sub>2") + proof(intro allI) + fix s\<^sub>1 s\<^sub>2 + show "?C s\<^sub>1 s\<^sub>2" + apply(simp) + apply(subst mprefix_Par_distr[where C="UNIV", simplified]) + apply(subst S_rec, simp add: Tr Up mprefix_Un_distr) + by (simp add:step mono_mprefix_ref) + qed + qed + have dir2: "\ s\<^sub>1 s\<^sub>2. S (s\<^sub>1, s\<^sub>2) \ (P s\<^sub>1 || Q s\<^sub>2)" + proof(subst S, induct rule:fix_ind_k[of "\x. \ s\<^sub>1 s\<^sub>2. x (s\<^sub>1,s\<^sub>2) \ (P s\<^sub>1 || Q s\<^sub>2)" 1]) + case adm:1 + show ?case by (intro adm_all adm_below) (simp_all add: cont_fun) + next + case base_k_steps:2 + then show ?case by simp + next + case step:(3 x) + then show ?case (is "\ s\<^sub>1 s\<^sub>2. ?C s\<^sub>1 s\<^sub>2") + proof(intro allI) + fix s\<^sub>1 s\<^sub>2 + have P_rec_sym:"Mprefix (Tr\<^sub>1 s\<^sub>1) (\e. P (Up\<^sub>1 s\<^sub>1 e)) = P s\<^sub>1" using P_rec by metis + have Q_rec_sym:"Mprefix (Tr\<^sub>2 s\<^sub>2) (\e. Q (Up\<^sub>2 s\<^sub>2 e)) = Q s\<^sub>2" using Q_rec by metis + show "?C s\<^sub>1 s\<^sub>2" + apply(simp add: Tr Up) + apply(subst P_rec, subst Q_rec, subst mprefix_Par_distr[where C="UNIV", simplified]) + apply(rule mono_mprefix_ref) + using step by auto + qed + qed + from dir1 dir2 show ?thesis using below_antisym by blast +qed + +section\Consequences\ +\\reachable states from one starting state\ +inductive_set \ for Tr ::"'state::type \ 'event::type set" + and Up::"'state \ 'event \ 'state" + and s\<^sub>0::'state + where rbase: "s\<^sub>0 \ \ Tr Up s\<^sub>0" + | rstep: "s \ \ Tr Up s\<^sub>0 \ e \ Tr s \ Up s e \ \ Tr Up s\<^sub>0" + + + +\\Deadlock freeness\ +lemma deadlock_free_dnorm_ : + fixes Tr ::"'state::type \ 'event::type set" + and Up ::"'state \ 'event \ 'state" + and s\<^sub>0::'state + assumes non_reachable_sink: "\s \ \ Tr Up s\<^sub>0. Tr s \ {}" + defines P: "P \ P\<^sub>n\<^sub>o\<^sub>r\<^sub>m\Tr,Up\" (is "P \ fix\(\ X. ?P X)") + shows "s \ \ Tr Up s\<^sub>0 \ deadlock_free_v2 (P s)" +proof(unfold deadlock_free_v2_FD DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_def, induct arbitrary:s rule:fix_ind) + show "adm (\a. \x. x \ \ Tr Up s\<^sub>0 \ a \\<^sub>F\<^sub>D P x)" by (simp add: le_FD_adm monofun_def) +next + fix s :: "'state" + show "s \ \ Tr Up s\<^sub>0 \ \ \\<^sub>F\<^sub>D P s" by simp +next + fix s :: "'state" and x :: "'event process" + have P_rec: "P = ?P P" using fix_eq[of "(\ X. ?P X)"] P by simp + assume 1 : "\s. s \ \ Tr Up s\<^sub>0 \ x \\<^sub>F\<^sub>D P s" + and 2 : "s \ \ Tr Up s\<^sub>0 " + from 1 2 show "(\ x. (\xa\UNIV \ x) \ SKIP)\x \\<^sub>F\<^sub>D P s" + apply(simp add:failure_divergence_refine_def) + apply(subst P_rec, rule_tac trans_FD[simplified failure_divergence_refine_def, + rotated, OF Mprefix_refines_Mndet]) + apply(rule_tac CSP.mono_ndet_FD_left) + by (metis CSP.mono_ndet_FD_right rstep empty_not_UNIV mndet_distrib mono_mndet_FD + non_reachable_sink sup_top_left) +qed + + + +lemmas deadlock_free_dnorm = deadlock_free_dnorm_[rotated, OF rbase, rule_format] + +end + diff --git a/thys/CSP_RefTK/Properties.thy b/thys/CSP_RefTK/Properties.thy new file mode 100644 --- /dev/null +++ b/thys/CSP_RefTK/Properties.thy @@ -0,0 +1,243 @@ +\\ ******************************************************************** + * Project : CSP-RefTK - A Refinement Toolkit for HOL-CSP + * Version : 1.0 + * + * Author : Burkhart Wolff, Safouan Taha, Lina Ye. + * + * This file : Theorems on DF and LF + * + * Copyright (c) 2020 Université Paris-Saclay, France + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * * Neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************\ + +theory Properties + imports "Assertions_ext" +begin + +section \Deadlock Free\ + +thm deadlock_free_def + +lemma deadlock_free_implies_div_free: "deadlock_free P \ D P = {}" + by (simp add: deadlock_free_def div_free_DF failure_divergence_refine_def le_ref_def) + +lemma deadlock_free_implies_non_terminating: "deadlock_free (P::'a process) \ \s\T P. tickFree s" + unfolding deadlock_free_def apply(drule FD_F, drule le_F_T) unfolding trace_refine_def + using DF_all_tickfree_traces1[of "(UNIV::'a set)"] tickFree_def by fastforce + +definition deadlock_free_v2 :: "'a process \ bool" + where "deadlock_free_v2 P \ DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P UNIV \\<^sub>F P" + +lemma deadlock_free_v2_is_right: + "deadlock_free_v2 (P::'a process) \ (\s\T P. tickFree s \ (s, UNIV::'a event set) \ F P)" +proof + assume a:"deadlock_free_v2 P" + have "tickFree s \ (s, UNIV) \ F (DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P UNIV)" for s::"'a event list" + proof(induct s) + case Nil + then show ?case by (subst DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold, simp add:F_mndet write0_def F_Mprefix F_ndet F_SKIP) + next + case (Cons a s) + then show ?case + by (subst DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold, simp add:F_mndet write0_def F_Mprefix F_ndet F_SKIP) + qed + with a show "\s\T P. tickFree s \ (s, UNIV) \ F P" + using deadlock_free_v2_def failure_refine_def by blast +next + assume as1:"\s\T P. tickFree s \ (s, UNIV) \ F P" + have as2:"front_tickFree s \ (\aa \ UNIV. ev aa \ b) \ (s, b) \ F (DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P (UNIV::'a set))" + for s b + proof(induct s) + case Nil + then show ?case + by (subst DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_unfold, auto simp add:F_mndet write0_def F_Mprefix F_ndet F_SKIP) + next + case (Cons hda tla) + then show ?case + proof(simp add:DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_def fix_def) + define Y where "Y \ \i. iterate i\(\ x. (\xa\(UNIV::'a set) \ x) \ SKIP)\\" + assume a:"front_tickFree (hda # tla)" and b:"front_tickFree tla \ (tla, b) \ F (\i. Y i)" + and c:"\aa. ev aa \ b" + from Y_def have cc:"chain Y" by simp + from b have d:"front_tickFree tla \ \aa\UNIV. ev aa \ b \(tla, b) \ F (Y i)" for i + using F_LUB[OF cc] limproc_is_thelub[OF cc] by simp + from Y_def have e:"F(mndet UNIV (\x. Y i) \ SKIP) \ F (Y (Suc i))" for i by(simp) + from a have f:"tla \ [] \ hda \ tick" "front_tickFree tla" + apply (metis butlast.simps(2) butlast_snoc front_tickFree_charn + list.distinct(1) tickFree_Cons) + by (metis a append_Cons append_Nil front_tickFree_Nil front_tickFree_mono) + have g:"(hda#tla, b) \ F (Y (Suc i))" for i + using f c e[of i] d[of i] + by (auto simp: F_mndet write0_def F_Mprefix Y_def F_ndet F_SKIP) (metis event.exhaust)+ + have h:"(hda#tla, b) \ F (Y 0)" + using NF_ND cc g po_class.chainE proc_ord2a by blast + from a b c show "(hda#tla, b) \ F (\i. Y i)" + using F_LUB[OF cc] is_ub_thelub[OF cc] + by (metis D_LUB_2 cc g limproc_is_thelub po_class.chainE proc_ord2a process_charn) + qed + qed + show "deadlock_free_v2 P" + proof(auto simp add:deadlock_free_v2_def failure_refine_def) + fix s b + assume as3:"(s, b) \ F P" + hence a1:"s \ T P" "front_tickFree s" + using F_T apply blast + using as3 is_processT2 by blast + show "(s, b) \ F (DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P UNIV)" + proof(cases "tickFree s") + case FT_True:True + hence a2:"(s, UNIV) \ F P" + using a1 as1 by blast + then show ?thesis + by (metis FT_True UNIV_I UNIV_eq_I a1(2) as2 as3 emptyE event.exhaust + is_processT6_S1 tickFree_implies_front_tickFree_single) + next + case FT_False: False + then show ?thesis + by (meson T_F_spec UNIV_witness a1(2) append_single_T_imp_tickFree + as2 emptyE is_processT5_S7) + qed + qed +qed + +lemma deadlock_free_v2_implies_div_free: "deadlock_free_v2 P \ D P = {}" + by (metis F_T append_single_T_imp_tickFree deadlock_free_v2_is_right ex_in_conv + nonTickFree_n_frontTickFree process_charn) + +corollary deadlock_free_v2_FD: "deadlock_free_v2 P = DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P UNIV \\<^sub>F\<^sub>D P" + unfolding deadlock_free_v2_def + using deadlock_free_v2_implies_div_free FD_F F_D_FD deadlock_free_v2_def divergence_refine_def + by fastforce + +lemma all_events_refusal: + "(s, {tick} \ ev ` (events_of P)) \ F P \ (s, UNIV::'a event set) \ F P" +proof - + assume a1:"(s, {tick} \ ev ` events_of P) \ F P" + { assume "(s, UNIV) \ F P" + then obtain c where "c \ {tick} \ ev ` events_of P \ s @ [c] \ T P" + using is_processT5_S1[of s "{tick} \ ev ` events_of P" P + "UNIV - ({tick} \ ev ` events_of P)", simplified] F_T a1 by auto + hence False by (simp add:events_of_def, cases c) fastforce+ + } + with a1 show "(s, UNIV) \ F P" by blast +qed + +corollary deadlock_free_v2_is_right_wrt_events: + "deadlock_free_v2 (P::'a process) \ + (\s\T P. tickFree s \ (s, {tick} \ ev ` (events_of P)) \ F P)" + unfolding deadlock_free_v2_is_right using all_events_refusal apply auto + using is_processT4 by blast + +lemma deadlock_free_is_deadlock_free_v2: + "deadlock_free P \ deadlock_free_v2 P" + using DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P_DF_refine_FD deadlock_free_def deadlock_free_v2_FD trans_FD by blast + + +section \Non-terminating Runs\ + +definition non_terminating :: "'a process \ bool" + where "non_terminating P \ RUN UNIV \\<^sub>T P" + +corollary non_terminating_refine_DF: "non_terminating P = DF UNIV \\<^sub>T P" + and non_terminating_refine_CHAOS: "non_terminating P = CHAOS UNIV \\<^sub>T P" + by (simp_all add: DF_all_tickfree_traces1 RUN_all_tickfree_traces1 CHAOS_all_tickfree_traces1 + non_terminating_def trace_refine_def) + +lemma non_terminating_is_right: "non_terminating (P::'a process) \ (\s\T P. tickFree s)" + apply (rule iffI) + by (auto simp add:non_terminating_def trace_refine_def tickFree_def RUN_all_tickfree_traces1)[1] + (auto simp add:non_terminating_def trace_refine_def RUN_all_tickfree_traces2) + +lemma nonterminating_implies_div_free: "non_terminating P \ D P = {}" + unfolding non_terminating_is_right + by (metis NT_ND equals0I front_tickFree_charn process_charn tickFree_Cons tickFree_append) + +lemma non_terminating_implies_F: "non_terminating P \ CHAOS UNIV \\<^sub>F P" + apply(auto simp add: non_terminating_is_right failure_refine_def) + using CHAOS_has_all_tickFree_failures F_T by blast + +corollary non_terminating_F: "non_terminating P = CHAOS UNIV \\<^sub>F P" + by (auto simp add:non_terminating_implies_F non_terminating_refine_CHAOS le_F_T) + +corollary non_terminating_FD: "non_terminating P = CHAOS UNIV \\<^sub>F\<^sub>D P" + unfolding non_terminating_F + using div_free_CHAOS nonterminating_implies_div_free FD_F F_D_FD divergence_refine_def + non_terminating_F by fastforce + + +section \Lifelock Freeness\ + +thm lifelock_free_def + +corollary lifelock_free_is_non_terminating: "lifelock_free P = non_terminating P" + unfolding lifelock_free_def non_terminating_FD by rule + +lemma div_free_divergence_refine: + "D P = {} \ CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P UNIV \\<^sub>D P" + "D P = {} \ CHAOS UNIV \\<^sub>D P" + "D P = {} \ RUN UNIV \\<^sub>D P" + "D P = {} \ DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P UNIV \\<^sub>D P" + "D P = {} \ DF UNIV \\<^sub>D P" + by (simp_all add: div_free_CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P div_free_CHAOS div_free_RUN div_free_DF div_free_DF\<^sub>S\<^sub>K\<^sub>I\<^sub>P + divergence_refine_def) + +definition lifelock_free_v2 :: "'a process \ bool" + where "lifelock_free_v2 P \ CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P UNIV \\<^sub>F\<^sub>D P" + +lemma div_free_is_lifelock_free_v2: "lifelock_free_v2 P \ D P = {}" + using CHAOS\<^sub>S\<^sub>K\<^sub>I\<^sub>P_has_all_failures_Un FD_D F_D_FD div_free_divergence_refine(1) lifelock_free_v2_def + by blast + +lemma lifelock_free_is_lifelock_free_v2: "lifelock_free P \ lifelock_free_v2 P" + by (simp add: FD_D div_free_divergence_refine(2) div_free_is_lifelock_free_v2 lifelock_free_def) + +corollary deadlock_free_v2_is_lifelock_free_v2: "deadlock_free_v2 P \ lifelock_free_v2 P" + by (simp add: deadlock_free_v2_implies_div_free div_free_is_lifelock_free_v2) + + +section \New laws\ + +lemma non_terminating_seq: "non_terminating P \ (P `;` Q) = P" + apply(auto simp add: non_terminating_is_right Process_eq_spec D_seq F_seq F_T is_processT7) + using process_charn apply blast + using process_charn apply blast + using F_T is_processT5_S2a apply fastforce + using D_T front_tickFree_Nil by blast + +lemma non_terminating_inter: "non_terminating P \ lifelock_free_v2 Q \ non_terminating (P \C\ Q)" + apply(auto simp add: non_terminating_is_right div_free_is_lifelock_free_v2 T_sync) + apply (metis equals0D ftf_syn1 ftf_syn21 insertI1 tickFree_def) + apply (meson NT_ND is_processT7_S tickFree_append) + by (metis D_T empty_iff ftf_syn1 ftf_syn21 insertI1 tickFree_def) + + +end diff --git a/thys/CSP_RefTK/ROOT b/thys/CSP_RefTK/ROOT new file mode 100644 --- /dev/null +++ b/thys/CSP_RefTK/ROOT @@ -0,0 +1,67 @@ +chapter AFP + +(***************************************************************************** + * + * Project : HOL-CSP - A Shallow Embedding of CSP in Isabelle/HOL + * Version : 2.0 + * + * Author : Burkhart Wolff, Safouan Taha & Lina Ye + * (Based on HOL-CSP 1.0 by Haykal Tej and Burkhart Wolff) + * + * This file : The Process Refinement Toolkit CSP_RefTK + * + * Copyright (c) 2020 Université Paris-Saclay, France + * + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * * Neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************) +(* $Id:$ *) + +session "CSP_RefTK" (AFP) = HOLCF + + description \An Environment for Advanced Refinement Proofs based on Normalization. + Together with a proof of the generalized dining philosophers problem.\ + options [timeout = 1200] + sessions + "HOLCF-Library" + "HOL-CSP" + theories + Introduction + Assertions_ext Properties + Fix_ind_ext Process_norm + CopyBuffer_props + DiningPhilosophers + Conclusion + document_files + "root.tex" + "adb-long.bib" + "root.bib" + "figures/session_graph.pdf" + diff --git a/thys/CSP_RefTK/document/adb-long.bib b/thys/CSP_RefTK/document/adb-long.bib new file mode 100644 --- /dev/null +++ b/thys/CSP_RefTK/document/adb-long.bib @@ -0,0 +1,80 @@ +% $Id: adb-long.bib 6518 2010-01-24 14:18:10Z brucker $ +@PREAMBLE{ {\providecommand{\ac}[1]{\textsc{#1}} } + # {\providecommand{\acs}[1]{\textsc{#1}} } + # {\providecommand{\acf}[1]{\textsc{#1}} } + # {\providecommand{\TAP}{T\kern-.1em\lower-.5ex\hbox{A}\kern-.1em P} } + # {\providecommand{\leanTAP}{\mbox{\sf lean\it\TAP}} } + # {\providecommand{\holz}{\textsc{hol-z}} } + # {\providecommand{\holocl}{\textsc{hol-ocl}} } + # {\providecommand{\isbn}{\textsc{isbn}} } + # {\providecommand{\Cpp}{C++} } + # {\providecommand{\Specsharp}{Spec\#} } + # {\providecommand{\doi}[1]{\href{http://dx.doi.org/#1}{doi: + {\urlstyle{rm}\nolinkurl{#1}}}}} } +@STRING{conf-tphols="\acs{tphols}" } +@STRING{iso = {International Organization for Standardization} } +@STRING{j-ar = "Journal of Automated Reasoning" } +@STRING{j-cacm = "Communications of the \acs{acm}" } +@STRING{j-acta-informatica = "Acta Informatica" } +@STRING{j-sosym = "Software and Systems Modeling" } +@STRING{j-sttt = "International Journal on Software Tools for Technology" } +@STRING{j-ist = "Information and Software Technology" } +@STRING{j-toplas= "\acs{acm} Transactions on Programming Languages and + Systems" } +@STRING{j-tosem = "\acs{acm} Transactions on Software Engineering and + Methodology" } +@STRING{j-eceasst="Electronic Communications of the \acs{easst}" } +@STRING{j-fac = "Formal Aspects of Computing" } +@STRING{j-ucs = "Journal of Universal Computer Science" } +@STRING{j-sl = "Journal of Symbolic Logic" } +@STRING{j-fp = "Journal of Functional Programming" } +@STRING{j-tkde = {\acs{ieee} Transaction on Knowledge and Data Engineering} } +@STRING{j-tse = {\acs{ieee} Transaction on Software Engineering} } +@STRING{j-entcs = {Electronic Notes in Theoretical Computer Science} } +@STRING{s-lnai = "Lecture Notes in Computer Science" } +@STRING{s-lncs = "Lecture Notes in Computer Science" } +@STRING{s-lnbip = "Lecture Notes in Business Information Processing" } +@String{j-computer = "Computer"} +@String{j-tissec = "\acs{acm} Transactions on Information and System Security"} +@STRING{omg = {Object Management Group} } +@STRING{j-ipl = {Information Processing Letters} } +@STRING{j-login = ";login: the USENIX Association newsletter" } + +@STRING{PROC = "Proceedings of the " } + + +% Publisher: +% ========== +@STRING{pub-awl = {Addison-Wesley Longman, Inc.} } +@STRING{pub-awl:adr={Reading, MA, \acs{usa}} } +@STRING{pub-springer={Springer-Verlag} } +@STRING{pub-springer:adr={Heidelberg} } +@STRING{pub-cup = {Cambridge University Press} } +@STRING{pub-cup:adr={New York, \acs{ny}, \acs{usa}} } +@STRING{pub-mit = {\acs{mit} Press} } +@STRING{pub-mit:adr={Cambridge, Massachusetts} } +@STRING{pub-springer-ny={Springer-Verlag} } +, +@STRING{pub-springer-netherlands={Springer Netherlands} } +@STRING{pub-springer-netherlands:adr={} } +@STRING{pub-springer-ny:adr={New York, \acs{ny}, \acs{usa}} } +@STRING{pub-springer-london={Springer-Verlag} } +@STRING{pub-springer-london:adr={London} } +@STRING{pub-ieee= {\acs{ieee} Computer Society} } +@STRING{pub-ieee:adr={Los Alamitos, \acs{ca}, \acs{usa}} } +@STRING{pub-prentice={Prentice Hall, Inc.} } +@STRING{pub-prentice:adr={Upper Saddle River, \acs{nj}, \acs{usa}} } +@STRING{pub-acm = {\acs{acm} Press} } +@STRING{pub-acm:adr={New York, \acs{ny} \acs{usa}} } +@STRING{pub-oxford={Oxford University Press, Inc.} } +@STRING{pub-oxford:adr={New York, \acs{ny}, \acs{usa}} } +@STRING{pub-kluwer={Kluwer Academic Publishers} } +@STRING{pub-kluwer:adr={Dordrecht} } +@STRING{pub-elsevier={Elsevier Science Publishers} } +@STRING{pub-elsevier:adr={Amsterdam} } +@STRING{pub-north={North-Holland Publishing Co.} } +@STRING{pub-north:adr={Nijmegen, The Netherlands} } +@STRING{pub-ios = {\textsc{ios} Press} } +@STRING{pub-ios:adr={Amsterdam, The Netherlands} } +@STRING{pub-heise={Heise Zeitschriften Verlag} } +@STRING{pub-heise:adr={Hannover, Germany} } diff --git a/thys/CSP_RefTK/document/figures/session_graph.pdf b/thys/CSP_RefTK/document/figures/session_graph.pdf new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7de827cd2fc6a5d5483562abf78f4d5e59300405 GIT binary patch literal 11999 zc$}SjWmufcvMvNCXatu5LW0i>FoQ#IcY+TDhQVQQ*FbO!P6!eR1PC6S;1+_rySo!4 zz$I(#z1O;DoqL{p@Au>DudA!N-l^`YsUI(+ii8w9n1dUaad~B61eXf{0w9eoaRmi| zQWn-u2nV2)wUHA-0s%*wAb<)8TQetf05_kou%nX$!pH{K?E~wo1MU(hR2{^{sg5nX zJ{&Fdfv~@z* zIynMFfYUINmF%I3VHb2q%CZ@E$q9g#{|ylO7r;LQ00wY^csY6hhY0aP!H~bjXwS>tD}HS3u66(#hc5P9fS?C2t`zYo zk8XF7`yr}78Ie6b6ZxYDCGx~Xk|E_x<+9lwPl?@_nIzj^gouay8%bSyc)71~22em)bZ_=?UpM@|5k;KU1Jat`IOHmmY z!soIIX`d<(_&i@$h1_T&Vpb;Z_^i-yGha|=217n(OqM8~8_5l15tzSglgi?#hAS^v zB+K+ExKqP>RXZyL_TR^W)>=5oXrIY>@1AcxrF*a8MLOgcN+#kgZQh^OUtOUWT6|6N zD_y`$srDr4fNE1h<9)<+_}1N62K7b$XAg!HEGdTzZWT12@ez+AeUVN_UA}h^gFAk& z;qQa%ZLkc8P&JSmo{_LVv#c6O69pd1mTwf_kJG^v42jFRzYwVkI7pdp%FU{2V`)gDYu} zcc}>JQDDYC_BOQ?6%B0J%Rf!_lvga;QFNY@oOzQKMnA%Y>!AqwYP}l>NS^Bnp!r(y zL><*G^(JN8P;))MvX)NORY6jU<||LhPt*Q}98to;GQm|aTs~ke`RGuWP2D?XTW_BO z$ja*2rfZt|1~;w~Q<0*(*C1k!p-)M{nS$I>CKGqve9*!{M+cGD`$PwUAjbb8m@wFt zWSD5P?L+u%kW+lHTUCXEo4V0!WUD6_t29S&hWk^k5sosV2=34rOsWH`W*5GL&Loh& zO7>6&k~|db5$dtmvOx+xCZTxD26PVYOvLa;%yUMQ*9eC|cxD*s<*K$0Q^6QI&Yvc2 zU5qz-e$wfCUDBzi=p({#v5omXOjE%=gz}VxmE7-lmmc@NbSM8BPby~tzi|d1X{f|6 zjLbaYwZDCcmLKUI_WcbuhDyV%dc`cM@n<=BTq?D($1D*i3#0zd!>7|)6%D;ETxj** z=L&Uu6pwuJRlH}QpGcNSst5GOAB)cR8-8JuG)3frW)uzs##X>HPxX7S{QQD@(P<(( zm_)C7-UdASq$*e{ieU?dVXUREtlwE(g~V!2}3GXrL5BOJ?B04 z@EqRj@QVGQd_JLO+=AaS-QNB{J@8mji{vwv7;94%^_^TZQ2kRYsimn!X<{Fi_eoM) zTMhK%=ZRn&)oGiO6A}~7fq2n4QRQKEitR#orxV{pZv^TFYrx zrL31cjTkX<>)gAkWLf$0tC9j<-K1$Y+hS-1+TSd32JNqwICJjrmP8tTSop%cZ}wCke?g7gm)AxhI8#nMrZW8=p?BpJ9~GGCp@*u&mg^W2WXLQ zc1>d4keR&{=}Z}nw%6M1s-ZlE&r)B3_fc=ieg^tPIQ~j+;dJo4w72o7#TrwNCzV;C zr*!0X^Stge&@lx*TOWvd+>zc>Ge)|7u!4J+O=UZNyPa2JwGv5BAar6TWaa!$?TLi5 z3A>|S@`i(;_pfw8W_KE;ukK+SjgK!qWp&)r)eI9OC6-hS@1}+6-#YI-^nB?r-xFPk zb2b3IzH}VMG)ukl4SPy#fO?Ko96Y;GQNcckRmc{g>V(ORzRAV0FFc6VwZPE*BTi_7_2vGzEwnC;-2{;}=> zjwrVvdZW={86gke%4gQ9m-BBQi1JrD!n zMNPK`=rmZhlQgz~Mq+XqxipIjPoAFS>~?%qd~SlUmQUs8NM0e2NJ`6zR`Ad+4q;Vb zc$`hlo=P?oniO^(Qtd@`JW&zz39w!4uIhJ zr2G3!hG8lHILxEP@|N-E?PS!0CO*(k7YEyEYCw6SI5Y~(L+d+9BcL1mKeeGBrnVWUagOuXxf;kb2`1n;yvTbB~%6i9w^>!Eib$wndU z4bw&NN(GdEYYc(WPjjcdMpuY2{wy^8$iz)8YKm0HXAiM1z0CXWgULCX&<`X53PqnL z+nZXUw!;U~MX#1O{GieS-}()ux$z{Jv0K{7eA8mM;G*ACc2Yi*wezkUEn}`584I3( z?6aF_Doar`h~i^3Qko1V9eMoAH=ctsUR%Fgpbv8^xtOY%GM@d5i*miSIgBV*D3z!7~NCj$lZ@|0G~a) zmyQ^%v?vmMQ;+IJ`A!bKbd2Ge+H{DI9%B1eNt|A99qVo?PeZ&^OPLzXo#qiu)lKba z9qT%471t|Fx*?jbgXxyBIoskRFm_!ljKI)CUL!oeu|uJ z0gDZ}Ti-eyo=wq~%bFS*$MrTo5n#aUv5qBAyf-gAoapE#nc$vvexF6Mw1a~vWfSRf zQUZ@f4D$_j@uy~JizY0?5sk+v`SCO|ErHFXOoPwZLU;6WR#!n0m!o;j36(i1;0Rs~0bNK@c zmchkwsvt#!?Dn5U2CXA8e|kVKBph?bheZ$ zU)l_8ANMjSlY4S|HD%^&vqz#6Ep)XB*Zh!`#$TU#b)-0+;uz`siU8tMW75$Up1@+Y zd78qt?`4bJE649nXHcg8^?1fc^WxLIqKNn&^NX0bWz!^CYJxub*^>Y|wXub$AlY~# z<{!2><GcJ~QekFseBO4u}_{ztO%?TTaEy_oyyV4{tR|BgT0{l2%Z6c0i~L)OG9- zU%m>yEmjtWZjtQxoi#eo^4s-%at$UV-D%eVD;BaQ3j6OlaT(X!`s3m2?Rq{eve_@*KQNqYQ&j9rCd2@~Nca?0_5-6?qvZGSA3xs7+qh(%Z>E zC`;4`xCvAmMMN}2syZmDa*kF>1fZAJwEa_m5!7>NNN(ky#ZC=C)e#%99SiWH;$`c8Aq+WP}e06nZ&b*uhDuCTgVe z1yehYr#C`h@hazhdijPumS{#&_L+@?`-}4rePNpptZvShv@(&$ENf4?6VV|b8@@dz z;Vb;+>hq|IdgehIUw;%s|1wi#Ihqhe=1ZW{vlKiIa?|>;*eV-z#@gvmm5Pp=PhKoX z1dg%|z4dzC`$kWvOuWtuZ8I zX_;k-q>V@Sabe{+ztx*brspeWanx4Ra^zOBtAwYEC?hgy1=S&ZTNGZ(&!HF}jIi|8 zSuAD56fW9Xtk$;2Sc`6#7x@x5KR9b2j9nNu=^hW3qzhcO1ZO~O6C3p&3Fq7RQP)YH zuwy_oO=jIh8=1qfTR7?^Wi?GT9UGm&YO(494^uAZIbii`&X1~|H4qKEdviLJD2)XT zcvubRUU{acUQcvUDq z-hFZ{aSaP%Z@42JOB?z6v$6DU07hqa!DfAeVZ8!y1;C#6wNS8!{~r>oe=uo>Vz$yQHWZ zLEX*Z`00w{)Jb;trFm}q89s5NxW97gYD`D1(8PB^35#^jIb5H!gm=Ggq#;3?ZRZ3T zRs5FSQ+oWHfyC3RQ zK?zGFp7#;7dj{G%k-Vpgemttmpr~a*L~lv(jhjMI@*PObgv@g{D}VYRL}0Q03D&r7 zkgpCvQbj5$YX5Y!J+R6q2Ca;KoY~Qjnox_7_$Kp3m`zf#yZ6<)2OoAlS=6_WApshQ zfi68#C0`FS@is_(lC99Nn-bH2h)$#TY`hSUx1&^d(R&{E@uMWq2uuB%9F_`X+ZWHr z8ztYnr-qAW+&60;^4kVBtmL63*eD|d9O&umYUvIMIGT=eCgBfzZT;G9&F3wjGCO`$ z0vCUZh=}0Oj|_Y=p($C~D`SFD=d{A4BI0|i)#Q=>@hAz+YNJ7N=}_;)5^H}p|CHZh zdz9FZvx?JXud1I zk;!;KUR>5z zA5>y8Iw(J@)%-oSJziFCIlf+zak@^{acfX%=D=Dkbk%`F{N+1m@GF_4JsA}qZf?B7 zBH>55hwrwhJJCwl*ZWHI>R`2N!6T`x;#n%ZN9ttdYV=YziQdB2$qKdpIrcI!+WGqvuu-8g=QgzW=5l_+P1EYy& z+fNTqL?TjFiGs?+&&`b=CG7+a4RxX@g#Nl<{OJCsNX^bs+DMDp(12qj; zwa?vWQ$o?LoTT(6k8eReYZ z>^4Z=*gIJevYT`@6v*}LE=LT!jNmjxaH$7oozT27ZsOK+madCnP2g ze$l#Q;a{GoJ)E0EnlZ0hpNgrA7+W$l^NF)17Jgxsa1d?m{O zLm*<6R%xb=kH0k(Xdm8nqG+1oBHo4LB}2$_mT!4twA)+IF& zVdu@k{3aT~!w!m_Oy}t<0l7954L_5ig<{3}m}p8mX?56GWuEM;;@gUk`9AyWZqt(G z#Xl}(=;j=WyD*#~U%UC=NpHRBvK;SE>qEv4i(IMM*v^`^+gcp4gf>a`6r5&zu&=rd zq3cc8@Wvh#$TLmUq1nGI_@FA4Fonl)8RalQ)Q82>Xu6iSCeTS-E7YAZDk*GyPC33i z!+kd0&+yACJ-EG|9y3GW$HbLx{eJdpT$y&9O)7^;%S!?6`Khg;-*^7fFX#!zlv@? zfb$^MVw-h#UNYn08FgowReYLX&4^7s8+%<~cP{sAk-aI)vf4vL2*2d>&%cDlaVoiT zwsa0ys_Y#aCkItj1Uwf+j|`2Ij`iW@b9F+L3GN%?$f5$?Y+F-W0BI@UIdyPwJ!& zg=&8k#C8>E%?VrT7f(=}*40SP9$!@iIBF64nt#xAxCNiN?C;6e=Claxj@ZUc7bfG+k#NC_TOs(upgJwTaC5YqJQ~e#qUd|7 z*pJNeCJuzWaltQoBPf6B$t>Cw zO|Ydr$d-*|CrCZ4IYP%k3XddUeoWq~ygBjO2fD88zaeF@=tU$joCVGwb z%LtY7P}O>rl(fYbj8`Lfm5os`1MX zMY6Nre^qx}Fi7xM5BrI@X>y8{#rP$YuuI3>93}4_TB{g!e11cCCRn z*f*4{*x*4o=Ro6r_Y_wuczvp);kqF!RkwZgt;L0`jxTT0fw*E@S4AVuZO9dcFjNzI z^nLP;2(91#*UCFl8-4s#TKs_|;cpoqqM}t_+yWdKHSd(Jj9%>0^c(|9wogy;5X5@? za^@`k^)pA$ju~+_&fA2#E4b7KOk1G|oCgX!Rx=#&G?mdubPXYn3fT+^n@GPq%FQcb zWB!5-UR}cEyrOIivVj=M z_3y$jnux#dxr%ioWkcR) zgfY1LNZsK-SD$fwPkRTnB_HyqqaJBHk}7P8hlX{K{%a(t{QyWHQmWG+zJwo}^> z4S>I2YadR?*4mNI52~G!CD1p*>0Bu=w4xb&;1-!4WVe)xsB_||mDJncBpvBa<~)2^27`vI3pXsa z;0q$=pmUqRz3>X8In_Fr)lBID#%TIXp3DMzT`a#PhaOFXz}(XJk1a6=sJlH{w0^?x zst0PIUYggV`|6V=E{0;5Gv8~II{98q3tmA5_A8XXzqp~=L!x}6t@_Zq!8f7iIv0Ms z;q^?ZjPTb=P1BP1F+RpRjr2HudyL@8v$-Dc$RW~`vD4U-Bwj1vg|B!3_1>;$v&h_~ zl?UmqF3ZAb$)=JG*8Cgckf9tW%IooW(rpzPBgR6cjwpL%cG47xb`-*}Q=R~my~Kuh zK_>{q6PkW8!|Z|fUmPB-;6xX`ME?W#3wONri*&im+x?OGkM&tdp2ljAqnmG?Wu#kQ z8WZfNGo<)DRw8^B`AFUcFPP09B%=w8jy%eK;XK@v9|z|9tg_AjJ+j7JsyEH4+7U(Q zX#>v{fjPgg*@x@Ls@Z5N$Tq^@u|-#3jerHLNUF&j%~?-cccXyfVWhRdh5mFySXgCR z2>js+T}AlKfbb$&jE~=4&VJwILqYUoLmNS5Ap~1wrgwi-UI)dYWAj8C0p_y3q$84k zCD40p89%;i)qu>$aW=eqg=3h{Wzv@&JR#ThNN#)~$3?Z*e*W1GM6GHfLU8-bf&!mv ziV0iRT}b*`4X$v_`uXix|N`rM7+fTsm1}|W184!+FOMixZo6RY8 z)5_OoPkE+1s-zkbT`uMYJz59}vRN$SCGy9m%<@IQqqf00vCHVUDqT=@da_q`@qA=k ztzg-GF4W+H0k6z;Y&*lu}?rq9NX&}?lS@I5nIZ__cK4RP@P@(PqLD(;1<8mgdsc&>* zYvOyK)?(Yt7-1U_1jRLf_X|^3F1#XR2)7f@L)in0yUpN~fxc@L;vPUEJ82n^9Y$j` zc;2>v!bm2(M&O>L@Ob^=7Yz98wk{S<3wCV)MA93>(?5t(x z;OmOVDf-~ipQ{Z78x97c2!FL7@sii8Dt|Ha&c=;7#s!1dV~~CW*i6{#67?V&h_M^| z5aqT8JKe8IyNM7O&$SK2JYQn;YQE5H79hP?%*zWLIP_-q_b!XPY0>VnMs3P8lp|9f z>n}QODr>Vyi4_enl5T<;Fj;aGVH{H0QM_DSx-~9@<6TC6{FI56{ACZDcF92e&OdC_ z%w%E6(AUqWts#s7yV0xQ!3CATq0&LuOlO0PuiS*wfHauLudY)`ya^=t!(L=n zr^^+!1S_4Ee4)>g7=`+lVFWBP80Tkpn$#VBq>p(zV8<@oDH48oY2#I#Xyd75fH%-drq_39UF0l%8u(`@*yKW|RoS zYvC1FyVF~CSM`8jjWi4B(cD8#*%}6M&;|xnN`}x9o-$%$)Fq_0{og z#)HOcI?I9a6A?@=WS|dk7`Qrc>GM9~?ngS5(`9r-Ym@p*T0-m870qN(9b@zJt-(FW zB3b)jTjo!@-usd-HhHJDZC{4%ZBxS3sV{S!aHC>XKv(pI zJEcm&eDrKx#_@X-9jOI++Ak|5*{&$QD7{#M_}UM(aV9^I<+?s%zYIKrWTbb6w)3H{E&%U51#@ltE8eC>;c&EzL<hm^=O2|i7hVTYIIN_O zmAFc#`$&vLe9mtkqWeaAbL!OwXkrNM|LD6FHP4p0Kyv%op{89Y02xi?^^hu;KAUXe z`AuFmoYfLRyL$TNl)@|B_7{!wy3Oj;$HO~6AX*h`l&o~g9AS+3R#YK&|GNv~8ylAK z47`I4F5^c>Hr!+<0e}TJ-Mqd}6PZ81PLplt^?wYGceUS__%TTHX@RL))od;5(4ug| z-)CSl#3vu~m>{-xO=`f6XZ+iC+2QpjJLdBBGh#@Lw+5==r{!KbNFegZO+4Oh>bo9s zVr2$@=?8?bphMWbgdH_xU|zAQCqC&`WFw{S-~s9JU}K+8x}i7K!`L6@)Qg3}Xt-&Q z1#xv=o}|=-mu^TkkN9mJ8wh8o6h|$l9*t{Q%%KvhCZvl#zq!6Uz2s?YbGyDq8`NV$ zZKi0ppd4*!zY8+qDnw#BC4926#cX(T_&vH=07|w+oNOL|=DNI-_JQzGhhLOv#$$mn zCIZe58}wh5-I9igjVOfPg0+;&?d;5?M;2FP^Tv!*{Z?F4YV%OiXFL^?gzMHIeEP zmDF3D_Qq#G)5G{^SMNncmdmJmzh~pft?7r+dFRIcLRVV{!R!*den%x9u_$o=O9jIQ zn04UZhhxIM_+x+j_KTvjSB53UoHQU)tC3Sqcpz9N!8-p^#1%hBl-uuk(=1+5h{TD3 z);X6Tz7gOqDwertFiU~esQ^-2EEjo*(p&SGLe>xOFvl0UxMoS?*z@~wn< z4PX)*SX;7MJ!L7JV8v%)`*era`eTXcpUf1Vzla|a2uJvD!U#JjHwY+hWG92LFf(@o zK>7H9>P`q7O#mvV(=46Vl<2sg#8^f)fD!gK8pWZDi&M;NtvaLF_l@ zgdGgx1OeE&_&@+oUI;JXehPv8v8-fdg8-_?NvX+*vC29c86&K%5fTVXBTZ*@BU?wH ztdo(o1zgnD%o+gz0Y(4B#{=Q}i@3u3H~d=n8-qYVb!TIz-!R2xC4Rg34Vm-zMBUx- z{%6SAnj-I&)t&9^tPwW9_X7dd5M~zlVR2^?z26hT3{-Y7K{#00nlZ_m+$&f(xibq3 z|Mk;>Vn&XLKR*7?!2kCU0eJohj21u-%%{f%1;M!Z^q{=l04Oi?KD@jD9v%O0 zKp+?oSPu%mKZkoA2sa<#PhALr3-YH7%EblX4WXXjPn?f8z|n;uOPY zKtw?Yw@>+9wpv1kVjp2UPUXaii9MCGQNNW_=k4e?ZJW$-OWkLd80qW*k<9#X64#zT2wa-(l}sVbps8jwh=z+i4Gv)T z-3YE`6zWYnxjfrh&u8+@<;XSqW+Fb8(KPj8|Kt}*iM@Vr?rSJ)_e9wnxlY>$d9Oy` z^Wy{_l^c7_{v2DK6zTZb*s@cejUd(QXi2ZJCItR-VP$$nV`gWf8p8S|O6!%o<}it6 zms~;SdEqCD0wYFZjUKsj75{|QOnO!etg)}L=ULlf2~RTFSo4D&3M(j?$RAaZRVLDj zhO0VieV~X#eU;TL7u=W!&pAisFrWtVm953^ zTLj?ylic=iB;bD{kwQAy{CD^74{ZNp$^jLPoE$9N?z0i_n+^BJ8}^6gZ!G}$|DTHY z8}{$}f1khqq2Y=BSJvIXbAb=S^S4|`(^5pvLW$N=CT>yZV=G#MsC+`U+41$elvc8; zVm;Eh`JTyyzvPH9xcYf*%A}?XuWscCteo%1a;4cgYFns)Fu$wqnt87p%u&fRBYl%} z3%e^yyVQ!Sl^E69D|9bfxH0N8yTK>$xxM@v$z?WPwtHF~^%LXbQK(@Dyzi{mrI>4# zZw|vsUk>}*&^*7mcTmDrO=ytAq=`6efVUkV6|4LD6EmW!u9tYoCe}VgTtbGEhW^bQ z`U<^0x_gveI)gs6UsqywGwcB45`Y+u-FGHfo`Z~2Rh|2=)I5q+p<%($eo;*Z=4;Wz zVc&URPJI$$xm!EJC`@G?%}XEHWN-_)wN zm2L{=^H3N14{rkMJUL5`iJYOm$IirDf#fSG2k4P+m|XRZBOYpe>s^m8gott2hqtzW z*Ga<7{;3?;`L<5;;H8wzUXB>e50~=9tV~rEj*d##BTzWQ<8f>^v&`sxIxw)n_lt1B z&uGiHeWOxt z8+Vi9S(VtTT*%&M@opuDBmd{3AQpO~g9y`iX|a`35o*;$DQ{N;C)HIh{fa@AJ$Epm z@T)Z}1+z;XshlV0{pPt2a^nTFb!#4FDbG0unwOMDopCx~qu#HZ`qk1CQ54OeJR5eE z2bH{Eanu|ODsnd9`-b!I-Lq#LgAqm6#%PUm1*ta@Y(~jS=UZ&%Y)s{g9RdtTxCxKT zHM=vt30_FeVJ#D+R@+$lIKM7x2QhbCvUo^I(%L~mUv@U*Ap}gm9}E40aNllNW@pi# zQ6E?eku^;AprrkT#b+01W?|C0Kb}T~%{4|T=?GC@&Svm{c4#;+P}wI7lD4TH)bqb= z7Y(Hg8D_?&c<8{{v74r9zOxco_)67XU)Wq&zwTEIq5puq%nnsXG}Z-?iGFU%w1!$L z?5IEQ?EbLEY{*=Mk%KT9O{Uxi8D z!o*Pz@~=YnZ?dl=P#o!e-+F-mR?9$t+5Dj=Zgk)LAkF^N|C7c0H|@WbK1HO7#C@S- zlHljOZ?nMQ-^~^$7nqY31bzVmyiMGdtW~}aY6ri08j{o3j#0&{3-kG0=z+OF|B!L={Z}6#UOwJ`*z$pS|6zMygt`CWmz$ICpE91m z;d62@x^H+Len%Q^fGlKIW zz{bLY##~T14+sK=BEVoiBVJBUV+4qci`N)#%z58zBY1^jKs6-t{&s-=*j3%aHbTV>q`XlOKFcid#%g89HEQR~O0Ea#<%K!iX diff --git a/thys/CSP_RefTK/document/root.bib b/thys/CSP_RefTK/document/root.bib new file mode 100644 --- /dev/null +++ b/thys/CSP_RefTK/document/root.bib @@ -0,0 +1,11107 @@ + +% $Id: fmde.bib 6539 2010-01-29 10:33:20Z brucker $ +@InProceedings{ zhang.ea:dynamic:2003, + author = {Guangsen Zhang and Manish Parashar}, + title = {Dynamic Context-aware Access Control for Grid + Applications}, + booktitle = {GRID '03: Proceedings of the Fourth International Workshop + on Grid Computing}, + year = 2003, + pages = 101, + address = {Washington, DC, USA}, + publisher = pub-ieee, + isbn = {0-7695-2026-X}, + tags = {ReadingList, SoKNOS, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ thomas:role-based:1996, + author = {Roshan Thomas}, + title = {Role-based access control and distributed object-based + enterprise computing}, + booktitle = {RBAC '95: Proceedings of the first ACM Workshop on + Role-based access control}, + year = 1996, + pages = 21, + address = pub-acm:adr, + publisher = pub-acm, + isbn = {0-89791-759-6}, + location = {Gaithersburg, Maryland, United States}, + doi = {10.1145/270152.270194}, + tags = {ReadingList, SoKNOS, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Article{ harrison.ea:protection:1976, + author = {Michael A. Harrison and Walter L. Ruzzo and Jeffrey D. + Ullman}, + title = {Protection in operating systems}, + journal = j-cacm, + year = 1976, + volume = 19, + number = 8, + pages = {461--471}, + issn = {0001-0782}, + doi = {10.1145/360303.360333}, + publisher = pub-acm, + address = pub-acm:adr, + tags = {ReadingList, SoKNOS, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ hafner.ea:modeling:2007, + author = {Michael Hafner and Mukhtiar Memon and Muhammad Alam}, + title = {Modeling and Enforcing Advanced Access Control Policies in + Healthcare Systems with \textsc{Sectet}}, + booktitle = {MoDELS Workshops}, + year = 2007, + pages = {132--144}, + doi = {10.1007/978-3-540-69073-3_15}, + crossref = {giese:models:2007} +} + +@Proceedings{ giese:models:2007, + editor = {Holger Giese}, + title = {Models in Software Engineering, Workshops and Symposia at + MoDELS 2007, Nashville, TN, USA, September 30 - October 5, + 2007, Reports and Revised Selected Papers}, + booktitle = {MoDELS Workshops}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 5002, + year = 2008, + isbn = {978-3-540-69069-6} +} + +@InProceedings{ hu.ea:dynamic:2004, + author = {Junzhe Hu and Alfred C. Weaver}, + title = {Dynamic, Context-Aware Access Control for Distributed + Healthcare Applications}, + booktitle = PROC # { the First Workshop on Pervasive Security, + Privacy and Trust (\acs{pspt})}, + year = 2004, + tags = {SoKNOS, AccessControl}, + abstract = {The rapid worldwide deployment of the Internet and Web is + the enabler of a new generation of e-healthcare + applications, but the provision of a security architecture + that can ensure the privacy and security of sensitive + healthcare data is still an open question. Current + solutions to this problem (mostly built on static RBAC + models) are application-dependent and do not address the + intricate security requirements of healthcare applications. + The healthcare industry requires flexible, on-demand + authentication, extensible context-aware access control, + and dynamic authorization enforcement. With on-demand + authentication, users are authenticated according to their + task-specific situations. Extensible context-aware access + control enables administrators to specify more precise and + fine-grain authorization polices for any application. + Dynamic authorization enforcement makes authorization + decisions based upon runtime parameters rather than simply + the role of the user. In this paper we describe a dynamic, + context-aware security infrastructure that can fulfill the + security requirements of healthcare applications and that + can also be easily adapted to offer security support for + similar enterprise applications.}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@TechReport{ spc:break-glass:2004, + title = {Break-Glass: An Approach to Granting Emergency Access to + Healthcare Systems}, + year = 2004, + abstract = {This white paper discusses a simple yet effective + emergency-access solution, sometimes called + ``break-glass.'' The purpose of break-glass is to allow + operators emergency access to the system in cases where the + normal authentication cannot be successfully completed or + is not working properly. The systems include medical data + acquisition devices as well as information systems which + are collectively referred to as Medical Information Systems + (MedIS).}, + institution = {Joint \acs{nema}/\acs{cocir}/\acs{jira} Security and + Privacy Committee (\acs{spc})}, + type = {White paper}, + tags = {ReadingList, SoKNOS, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ ferreira.ea:how:2006, + author = {A. Ferreira and R. Cruz-Correia and L. Antunes and P. + Farinha and E. Oliveira-Palhares and D.W. Chadwick and A. + Costa-Pereira}, + title = {How to Break Access Control in a Controlled Manner}, + booktitle = PROC # {\acs{ieee} International Symposium + on Computer-Based Medical Systems (\acs{cbms})}, + year = 2006, + pages = {847--854}, + abstract = {The electronic medical record (EMR) integrates + heterogeneous information within a healthcare institution + stressing the need for security and access control. The + Biostatistics and Medical Informatics Department from Porto + Faculty of Melsdicine has recently implemented a virtual + EMR (VEMR) in order to integrate patient information and + clinical reports within a university hospital. With more + than 500 medical doctors using the system on a daily basis, + an access control policy and model were implemented. + However, the healthcare environment has unanticipated + situations (i.e. emergency situations) where access to + information is essential. Most traditional policies do not + allow for overriding. A policy that allows for + "Break-The-Glass (BTG)" was implemented in order to + override access control whilst providing for + non-repudiation mechanisms for its usage. The policy was + easily integrated within the model confirming its + modularity and the fact that user intervention in defining + security procedures is crucial to its successful + implementation and use}, + keywords = {access control, medical administrative data processing, + security of dataaccess control, clinical reports, + electronic medical record, healthcare institution, patient + information, university hospital}, + doi = {10.1109/CBMS.2006.95}, + issn = {1063-7125}, + tags = {ReadingList, SoKNOS, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Article{ basin.ea:model:2006, + author = {David A. Basin and J\"{u}rgen Doser and Torsten + Lodderstedt}, + title = {Model driven security: From {UML} models to access control + infrastructures}, + journal = j-tosem, + year = 2006, + volume = 15, + number = 1, + pages = {39--91}, + issn = {1049-331X}, + doi = {10.1145/1125808.1125810}, + publisher = pub-acm, + address = pub-acm:adr, + tags = {ReadingList, SoKNOS, AccessControl, SecureUML, MDS}, + clearance = {unclassified}, + abstract = {We present a new approach to building secure systems. In + our approach, which we call Model Driven Security, + designers specify system models along with their security + requirements and use tools to automatically generate system + architectures from the models including complete, + configured access control infrastructures. Rather than + fixing one particular modeling language for this process, + we propose a general schema for constructing such languages + that combines languages for modeling systems with languages + for modeling security. We present several instances of this + schema thatcombine (both syntactically and semantically) + different UML modeling languages with a security modeling + language for formalizing access control requirements. From + models in the combined languages, we automatically generate + access control infrastructures for server-based + applications, built from declarative and programmatic + access control mechanisms. The modeling languages and + generation process are semantically well-founded and are + based on an extension of Role-Based Access Control. We have + implemented this approach ina UML-based CASE-tool and + report on experiments.}, + timestap = {2008-05-26} +} + +@InProceedings{ schaad.ea:role-based:2001, + author = {Andreas Schaad and Jonathan Moffett and Jeremy Jacob}, + title = {The role-based access control system of a European bank: a + case study and discussion}, + booktitle = PROC # { the sixth \acs{acm} symposium on Access + control models and technologies (\acs{sacmat})}, + year = 2001, + pages = {3--9}, + address = pub-acm:adr, + publisher = pub-acm, + isbn = {1-58113-350-2}, + location = {Chantilly, Virginia, United States}, + doi = {10.1145/373256.373257}, + tags = {ReadingList, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ beznosov:requirements:1998, + author = {Konstantin Beznosov}, + title = {Requirements for access control: \acs{us} Healthcare + domain}, + booktitle = PROC # { the third \acs{acm} workshop on Role-based + access control (\acs{rbac})}, + year = 1998, + pages = 43, + address = pub-acm:adr, + publisher = pub-acm, + isbn = {1-58113-113-5}, + location = {Fairfax, Virginia, United States}, + doi = {10.1145/286884.286892}, + tags = {ReadingList, SoKNOS, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ etalle.ea:posteriori:2007, + author = {Sandro Etalle and William H. Winsborough}, + title = {A posteriori compliance control}, + booktitle = PROC # { the 12th \acs{acm} symposium on Access + control models and technologies (\acs{sacmat})}, + year = 2007, + pages = {11--20}, + address = pub-acm:adr, + publisher = pub-acm, + isbn = {978-1-59593-745-2}, + location = {Sophia Antipolis, France}, + doi = {10.1145/1266840.1266843}, + tags = {ReadingList, SoKNOS, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ lupu.ea:policy:1996, + author = {Emil C. Lupu and Damian A. Marriott and Morris S. Sloman + and Nicholas Yialelis}, + title = {A policy based role framework for access control}, + booktitle = {RBAC '95: Proceedings of the first ACM Workshop on + Role-based access control}, + year = 1996, + pages = 11, + address = pub-acm:adr, + publisher = pub-acm, + isbn = {0-89791-759-6}, + location = {Gaithersburg, Maryland, United States}, + doi = {10.1145/270152.270171}, + tags = {ReadingList, SoKNOS, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Article{ wainer.ea:dw-rbac:2007, + author = {Jacques Wainer and Akhil Kumar and Paulo Barthelmess}, + title = {DW-RBAC: A formal security model of delegation and + revocation in workflow systems}, + journal = {Inf. Syst.}, + year = 2007, + volume = 32, + number = 3, + pages = {365--384}, + abstract = {One reason workflow systems have been criticized as being + inflexible is that they lack support for delegation. This + paper shows how delegation can be introduced in a workflow + system by extending the role-based access control (RBAC) + model. The current RBAC model is a security mechanism to + implement access control in organizations by allowing users + to be assigned to roles and privileges to be associated + with the roles. Thus, users can perform tasks based on the + privileges possessed by their own role or roles they + inherit by virtue of their organizational position. + However, there is no easy way to handle delegations within + this model. This paper tries to treat the issues + surrounding delegation in workflow systems in a + comprehensive way. We show how delegations can be + incorporated into the RBAC model in a simple and + straightforward manner. The new extended model is called + RBAC with delegation in a workflow context (DW-RBAC). It + allows for delegations to be specified from a user to + another user, and later revoked when the delegation is no + longer required. The implications of such specifications + and their subsequent revocations are examined. Several + formal definitions for assertion, acceptance, execution and + revocation are provided, and proofs are given for the + important properties of our delegation framework.}, + issn = {0306-4379}, + doi = {http://dx.doi.org/10.1016/j.is.2005.11.008}, + publisher = pub-elsevier, + address = {Oxford, UK, UK}, + tags = {ReadingList, SoKNOS}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ bertino.ea:flexible:1997, + author = {Elisa Bertino and Elena Ferrari and Vijayalakshmi Atluri}, + title = {A flexible model supporting the specification and + enforcement of role-based authorization in workflow + management systems}, + booktitle = {RBAC '97: Proceedings of the second ACM workshop on + Role-based access control}, + year = 1997, + pages = {1--12}, + address = pub-acm:adr, + publisher = pub-acm, + isbn = {0-89791-985-8}, + location = {Fairfax, Virginia, United States}, + doi = {10.1145/266741.266746}, + tags = {ReadingList, SoKNOS, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ bracha.ea:mixin-based:1990, + author = {Gilad Bracha and William Cook}, + title = {Mixin-based inheritance}, + booktitle = {OOPSLA/ECOOP '90: Proceedings of the European conference + on object-oriented programming on Object-oriented + programming systems, languages, and applications}, + year = 1990, + pages = {303--311}, + address = pub-acm:adr, + publisher = pub-acm, + isbn = {0-201-52430-X}, + location = {Ottawa, Canada}, + doi = {10.1145/97945.97982}, + tags = {ReadingList, OOP}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ park.ea:towards:2002, + author = {Jaehong Park and Ravi Sandhu}, + title = {Towards usage control models: beyond traditional access + control}, + booktitle = {SACMAT '02: Proceedings of the seventh ACM symposium on + Access control models and technologies}, + year = 2002, + pages = {57--64}, + address = pub-acm:adr, + publisher = pub-acm, + isbn = {1-58113-496-7}, + location = {Monterey, California, USA}, + doi = {10.1145/507711.507722}, + tags = {ReadingList, AccessControl, SoKNOS}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Article{ graham.ea:associations:1997, + author = {Ian Graham and Julia Bischof and Brian Henderson-Sellers}, + title = {Associations Considered a Bad Thing}, + journal = {JOOP}, + year = 1997, + volume = 9, + number = 9, + pages = {41--48}, + tags = {ReadingList, OOP}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ scharli.ea:traits:2003, + author = {Nathanael Sch{\"a}rli and St{\'e}phane Ducasse and Oscar + Nierstrasz and Andrew P. Black}, + title = {Traits: Composable Units of Behaviour}, + booktitle = {ECOOP}, + year = 2003, + pages = {248--274}, + ee = {http://springerlink.metapress.com/openurl.asp?genre=article{\&}issn=0302-9743{\&}volume=2743{\&}spage=248} + , + crossref = {cardelli:ecoop:2003}, + tags = {ReadingList, OOP}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Proceedings{ cardelli:ecoop:2003, + title = {ECOOP 2003 - Object-Oriented Programming, 17th European + Conference, Darmstadt, Germany, July 21-25, 2003, + Proceedings}, + year = 2003, + editor = {Luca Cardelli}, + volume = 2743, + series = s-lncs, + publisher = pub-springer, + booktitle = {ECOOP}, + isbn = {3-540-40531-3}, + tags = {ReadingList, OOP}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ wolter.ea:modelling:2008, + author = {Christian Wolter and Michael Menzel and Christoph Meinel}, + title = {Modelling Security Goals in Business Processes}, + booktitle = {Modellierung}, + year = 2008, + pages = {197--212}, + crossref = {kuhne.ea:modellierung:2008}, + tags = {ReadingList, MDS, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Proceedings{ kuhne.ea:modellierung:2008, + title = {Modellierung 2008, 12.-14. M{\"a}rz 2008, Berlin}, + year = 2008, + editor = {Thomas K{\"u}hne and Wolfgang Reisig and Friedrich + Steimann}, + volume = 127, + series = {LNI}, + publisher = {GI}, + booktitle = {Modellierung}, + isbn = {978-3-88579-221-5}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ wolter.ea:deriving:2007, + author = {Christian Wolter and Andreas Schaad and Christoph Meinel}, + title = {Deriving XACML Policies from Business Process Models}, + booktitle = {WISE Workshops}, + year = 2007, + pages = {142--153}, + ee = {http://dx.doi.org/10.1007/978-3-540-77010-7_15}, + crossref = {weske.ea:web:2007}, + tags = {ReadingList, SoKNOS, MDS}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Proceedings{ weske.ea:web:2007, + title = {Web Information Systems Engineering - WISE 2007 Workshops, + WISE 2007 International Workshops, Nancy, France, December + 3, 2007, Proceedings}, + year = 2007, + editor = {Mathias Weske and Mohand-Said Hacid and Claude Godart}, + volume = 4832, + series = s-lncs, + publisher = pub-springer, + booktitle = {WISE Workshops}, + isbn = {978-3-540-77009-1}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ sandhu.ea:nist:2000, + author = {Ravi S. Sandhu and David F. Ferraiolo and D. Richard + Kuhn}, + title = {The NIST model for role-based access control: towards a + unified standard}, + booktitle = {ACM Workshop on Role-Based Access Control}, + year = 2000, + pages = {47--63}, + doi = {10.1145/344287.344301}, + tags = {ReadingList, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Article{ ferraiolo.ea:proposed:2001, + author = {David F. Ferraiolo and Ravi S. Sandhu and Serban I. + Gavrila and D. Richard Kuhn and Ramaswamy Chandramouli}, + title = {Proposed \acs{nist} standard for role-based access + control}, + journal = j-tissec, + year = 2001, + pub = pub-acm, + address = pub-acm:adr, + volume = 4, + number = 3, + pages = {224--274}, + doi = {10.1145/501978.501980}, + tags = {ReadingList, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ drouineaud.ea:first:2004, + author = {Michael Drouineaud and Maksym Bortin and Paolo Torrini and + Karsten Sohr}, + title = {A First Step Towards Formal Verification of Security + Policy Properties for \acs{rbac}}, + booktitle = {QSIC}, + year = 2004, + pages = {60--67}, + doi = {10.1109/QSIC.2004.1357945}, + crossref = {anonymous:qsic:2004}, + tags = {AccessControl, FormalMethods, TheoremProving}, + abstract = {Considering the current expansion of IT-infrastructure the + security of the data inside this infrastructure becomes + increasingly important. Therefore assuring certain security + properties of IT-systems by formal methods is desirable. So + far in security formal methods have mostly been used to + prove properties of security protocols. However, access + control is an indispensable part of security inside a given + IT-system, which has not yet been sufficiently examined + using formal methods. The paper presents an example of a + RBAC security policy having the dual control property. This + is proved in a first-order linear temporal logic (LTL) that + has been embedded in the theorem prover Isabelle/HOL by the + authors. Thus the correctness of the proof is assured by + Isabelle/HOL. The authors consider first-order LTL a good + formalism for expressing RBAC authorisation constraints and + deriving properties from given RBAC security policies. + Furthermore it might also be applied to safety-related + issues in similar manner.}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Proceedings{ anonymous:qsic:2004, + title = {4th International Conference on Quality Software (QSIC + 2004), 8-10 September 2004, Braunschweig, Germany}, + year = 2004, + address = pub-ieee:adr, + publisher = pub-ieee, + booktitle = {QSIC}, + isbn = {0-7695-2207-6}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ sohr.ea:specification:2005, + author = {Karsten Sohr and Gail-Joon Ahn and Martin Gogolla and Lars + Migge}, + title = {Specification and Validation of Authorisation Constraints + Using UML and OCL}, + booktitle = {ESORICS}, + year = 2005, + pages = {64--79}, + ee = {http://dx.doi.org/10.1007/11555827_5}, + crossref = {vimercati.ea:computer:2005}, + abstracts = {Abstract. Authorisation constraints can help the policy + architect design and express higher-level security policies + for organisations such as financial institutes or + governmental agencies. Although the importance of + constraints has been addressed in the literature, there + does not exist a systematic way to validate and test + authorisation constraints. In this paper, we attempt to + specify non-temporal constraints and history-based + constraints in Object Constraint Language (OCL) which is a + constraint specification language of Unified Modeling + Language (UML) and describe how we can facilitate the USE + tool to validate and test such policies. We also discuss + the issues of identification of conflicting constraints and + missing constraints. }, + tags = {AccessControl, SecureUML}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Proceedings{ vimercati.ea:computer:2005, + title = {Computer Security - ESORICS 2005, 10th European Symposium + on Research in Computer Security, Milan, Italy, September + 12-14, 2005, Proceedings}, + year = 2005, + editor = {Sabrina De Capitani di Vimercati and Paul F. Syverson and + Dieter Gollmann}, + volume = 3679, + series = s-lncs, + publisher = pub-springer, + booktitle = {ESORICS}, + isbn = {3-540-28963-1}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ wolter.ea:modeling:2007, + author = {Christian Wolter and Andreas Schaad}, + title = {Modeling of Task-Based Authorization Constraints in BPMN}, + booktitle = {BPM}, + year = 2007, + pages = {64--79}, + ee = {http://dx.doi.org/10.1007/978-3-540-75183-0_5}, + crossref = {alonso.ea:business:2007}, + tags = {ReadingList, SoKNOS, MDS, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Proceedings{ alonso.ea:business:2007, + title = {Business Process Management, 5th International Conference, + BPM 2007, Brisbane, Australia, September 24-28, 2007, + Proceedings}, + year = 2007, + editor = {Gustavo Alonso and Peter Dadam and Michael Rosemann}, + volume = 4714, + series = s-lncs, + publisher = pub-springer, + booktitle = {BPM}, + isbn = {978-3-540-75182-3}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Article{ sohr.ea:analyzing:2008, + author = {Karsten Sohr and Michael Drouineaud and Gail-Joon Ahn and + Martin Gogolla}, + title = {Analyzing and Managing Role-Based Access Control + Policies}, + journal = j-tkde, + year = 2008, + doi = {10.1109/TKDE.2008.28}, + abstract = {Today more and more security-relevant data is stored on + computer systems; security-critical business processes are + mapped to their digital counterparts. This situation + applies to various domains such as health care industry, + digital government, and financial service institutes + requiring that different security requirements must be + fulfilled. Authorisation constraints can help the policy + architect design and express higher-level organisational + rules. Although the importance of authorisation constraints + has been addressed in the literature, there does not exist + a systematic way to verify and validate authorisation + constraints. In this paper, we specify both non-temporal + and history-based authorisation constraints in the Object + Constraint Language (OCL) and first-order linear temporal + logic (LTL). Based upon these specifications, we attempt to + formally verify role-based access control policies with the + help of a theorem prover and to validate policies with the + USE system, a validation tool for OCL constraints. We also + describe an authorisation engine, which supports the + enforcement of authorisation constraints.}, + tags = {ReadingList, AccessControl}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Article{ samuel.ea:context-aware:2008, + author = {Samuel, A. and Ghafoor, A. and Bertino, E.}, + title = {Context-Aware Adaptation of Access-Control Policies}, + journal = {Internet Computing, IEEE}, + year = 2008, + volume = 12, + number = 1, + pages = {51--54}, + abstract = {Today, public-service delivery mechanisms such as + hospitals, police, and fire departments rely on digital + generation, storage, and analysis of vital information. To + protect critical digital resources, these organizations + employ access-control mechanisms, which define rules under + which authorized users can access the resources they need + to perform organizational tasks. Natural or man-made + disasters pose a unique challenge, whereby previously + defined constraints can potentially debilitate an + organization's ability to act. Here, the authors propose + employing contextual parameters - specifically, activity + context in the form of emergency warnings - to adapt + access-control policies according to a priori + configuration.}, + keywords = {authorisation, disasters, organisational + aspectsaccess-control policy, context-aware adaptation, + digital resource protection, natural disaster, + organizational task, public-service delivery mechanism}, + doi = {10.1109/MIC.2008.6}, + issn = {1089-7801}, + tags = {ReadingList, AccessControl, SoKNOS}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Article{ adam.ea:secure:2007, + author = {Nabil Adam and Ahmet Kozanoglu and Aabhas Paliwal and + Basit Shafiq}, + title = {Secure Information Sharing in a Virtual Multi-Agency Team + Environment}, + journal = j-entcs, + year = 2007, + volume = 179, + pages = {97--109}, + issn = {1571-0661}, + abstract = {This paper proposes a two tier RBAC approach for secure + and selective information sharing among virtual + multi-agency response team (VMART) and allows expansion of + the VMART by admitting new collaborators (government + agencies or NGOs) as need arise. A coordinator Web Service + for each member agency is proposed. The coordinator Web + Service is responsible for authentication, information + dissemination, information acquisition, role creation and + enforcement of predefined access control policies. Secure, + selective and fine-grained information sharing is realized + through the encryption of XML documents according to RBAC + policies defined for the corresponding XML schema.}, + doi = {http://dx.doi.org/10.1016/j.entcs.2006.08.034}, + publisher = pub-elsevier, + address = pub-elsevier:adr, + tags = {ReadingList, SoKNOS}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ alam.ea:framework:2006, + author = {Muhammad Alam and Michael Hafner and Ruth Breu and Stefan + Unterthiner}, + title = {A Framework for Modeling Restricted Delegation in Service + Oriented Architecture}, + booktitle = {TrustBus}, + year = 2006, + pages = {142--151}, + ee = {http://dx.doi.org/10.1007/11824633_15}, + crossref = {fischer-hubner.ea:trust:2006}, + tags = {ReadingList, SoKNOS}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Proceedings{ fischer-hubner.ea:trust:2006, + title = {Trust and Privacy in Digital Business, Third International + Conference, TrustBus 2006, Krakow, Poland, September 4-8, + 2006, Proceedings}, + year = 2006, + editor = {Simone Fischer-H{\"u}bner and Steven Furnell and Costas + Lambrinoudakis}, + volume = 4083, + series = s-lncs, + publisher = pub-springer, + booktitle = {TrustBus}, + isbn = {3-540-37750-6}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ el-atawy.ea:policy:2005, + author = {Adel El-Atawy and K. Ibrahim and H. Hamed and Ehab + Al-Shaer}, + title = {Policy segmentation for intelligent firewall testing}, + booktitle = {NPSec 05}, + year = 2005, + pages = {67--72}, + month = nov, + publisher = pub-ieee, + day = 6, + keywords = {computer networks, intelligent networks, telecommunication + security, telecommunication traffic intelligent firewall + testing, network security, network traffic, packet + filtering algorithms, policy segmentation}, + acknowledgement={none}, + tags = {ReadingList, Testing, FWTesting}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ el-atawy.ea:automated:2007, + author = {Adel El-Atawy and Taghrid Samak and Zein Wali and Ehab + Al-Shaer and Frank Lin and Christopher Pham and Sheng Li}, + title = {An Automated Framework for Validating Firewall Policy + Enforcement}, + booktitle = {\acs{policy} '07}, + year = 2007, + pages = {151--160}, + publisher = pub-ieee, + acknowledgement={none}, + tags = {ReadingList, Testing, FWTesting}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ bishop.ea:engineering:2006, + author = {Steve Bishop and Matthew Fairbairn and Michael Norrish and + Peter Sewell and Michael Smith and Keith Wansbrough}, + title = {Engineering with logic: \acs{hol} specification and + symbolic-evaluation testing for \acs{tcp} implementations}, + booktitle = {\acs{popl}}, + year = 2006, + pages = {55--66}, + crossref = {morrisett.ea:proceedings:2006}, + acknowledgement={none}, + tags = {ReadingList, FWTesting, Testing}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Proceedings{ morrisett.ea:proceedings:2006, + title = {\acs{popl}}, + year = 2006, + editor = {J. Gregory Morrisett and Simon L. Peyton Jones}, + publisher = pub-acm, + booktitle = {\acs{popl}}, + adress = pub-acm:adr, + acknowledgement={none}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ marmorstein.ea:firewall:2006, + author = {Robert Marmorstein and Phil Kearns}, + title = {Firewall analysis with policy-based host classification}, + booktitle = {\acs{lisa}'06}, + year = 2006, + pages = {4--4}, + publisher = {\acs{usenix} Association}, + location = {Washington, \acs{dc}}, + acknowledgement={none}, + tags = {ReadingList, FWTesting, Testing}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ richters.ea:formalizing:1998, + abstract = {We present a formal semantics for the Object Constraint + Language (OCL) which is part of the Unified Modeling + Language (UML) - an emerging standard language and notation + for object-oriented analysis and design. In context of + information systems modeling, UML class diagrams can be + utilized for describing the overall structure, whereas + additional integrity constraints and queries are specified + with OCL expressions. By using OCL, constraints and queries + can be specified in a formal yet comprehensible way. + However, the OCL itself is currently defined only in a + semi-formal way. Thus the semantics of constraints is in + general not precisely defined. Our approach gives precise + meaning to OCL concepts and to some central aspects of UML + class models. A formal semantics facilitates verification, + validation and simulation of models and helps to improve + the quality of models and software designs.}, + bibkey = {richters.ea:formalizing:1998}, + author = {Mark Richters and Martin Gogolla}, + title = {On Formalizing the \acs{uml} Object Constraint Language + \acs{ocl}}, + pages = {449--464}, + doi = {10.1007/b68220}, + crossref = {ling.ea:conceptual:1998}, + acknowledgement={brucker, 2007-02-19}, + tags = {MDE}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Proceedings{ ling.ea:conceptual:1998, + language = {USenglish}, + editor = {Tok Wang Ling and Sudha Ram and Mong-Li Lee}, + booktitle = {Conceptual Modeling---{ER} '98}, + title = {Conceptual Modeling---{ER} '98}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 1507, + doi = {10.1007/b68220}, + year = 1998, + isbn = {978-3-540-65189-5}, + acknowledgement={brucker, 2007-02-19}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ cook.ea::amsterdam:2002, + abstract = {In November 1998 the authors participated in a two-day + workshop on the Object Constraint Language (OCL) in + Amsterdam. The focus was to clarify issues about the + semantics and the use of OCL, and to discuss useful and + necessary extensions of OCL. Various topics have been + raised and clarified. This manifesto contains the results + of that workshop and the following work on these topics. + Overview of OCL.}, + author = {Steve Cook and Anneke Kleppe and Richard Mitchell and + Bernhard Rumpe and Jos Warmer and Alan Wills}, + title = {The Amsterdam Manifesto on \acs{ocl}}, + pages = {115--149}, + crossref = {clark.ea:object:2002}, + acknowledgement={brucker, 2007-02-19}, + tags = {MDE}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ gogolla.ea:expressing:2001, + author = {Martin Gogolla and Mark Richters}, + bibkey = {gogolla.ea:expressing:2001}, + abstract = {The Unified Modeling Language \acs{uml} is a complex + language offering many modeling features. Especially the + description of static structures with class diagrams is + supported by a rich set of primitives. This paper shows how + to transfrom \acs{uml} class diagrams involving cardinality + constraints, qualifiers, association classes, aggregations, + compositions, and generalizations into equivalent \acs{uml} + class diagrams employing only binary associations and + \acs{ocl} constraints. Thus we provide a better + understanding of \acs{uml} features. By reducing more + complex features in terms of basic ones, we suggest an easy + way users can gradually extend the set of \acs{uml} + elements they commonly apply in the modeling process.}, + title = {Expressing \acs{uml} Class Diagrams Properties with + \acs{ocl}}, + pages = {85--114}, + crossref = {clark.ea:object:2002}, + acknowledgement={brucker, 2007-02-19}, + tags = {MDE}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ richters.ea:ocl:2001, + abstract = {{The Object Constraint Language \acs{ocl} allows to + formally specify constraints on a \acs{uml} model. We + present a formal syntax and semantics for \acs{ocl} based + on set theory including expressions, invariants and pre- + and postconditions. A formal foundation for \acs{ocl} makes + the meaning of constraints precise and helps to eliminate + ambiguities and inconsistencies. A precise language de + nition is also a prerequisite for implementing CASE tools + providing enhanced support for \acs{uml} models and + \acs{ocl} constraints. We give a survey of some \acs{ocl} + tools and discuss one of the tools in some more detail. The + design and implementation of the USE tool supporting the + validation of \acs{uml} models and \acs{ocl} constraints is + based on the formal approach presented in this paper.}}, + bibkey = {richters.ea:ocl:2001}, + author = {Mark Richters and Martin Gogolla}, + title = {\acs{ocl}: Syntax, Semantics, and Tools.}, + pages = {42--68}, + crossref = {clark.ea:object:2002}, + acknowledgement={brucker, 2007-02-19}, + tags = {MDE}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ hennicker.ea:precise:2002, + author = {Rolf Hennicker and Heinrich Hu{\ss}mann and Michel Bidoit}, + title = {On the Precise Meaning of \acs{ocl} Constraints}, + pages = {69--84}, + crossref = {clark.ea:object:2002}, + abstract = {When OCL is applied in concrete examples, many questions + arise about the precise meaning of OCL constraints. The + same kind of difficulties appears when automatic support + tools for OCL are designed. These questions are due to the + lack of a precise semantics of OCL constraints in the + context of a UML model. The aim of this paper is to + contribute to a clarification of several issues, like + interpretation of invariants and pre- and postconditions, + treatment of undefined values, inheritance of constraints, + transformation rules for OCL constraints and computation of + proof obligations. Our study is based on a formal, abstract + semantics of OCL.}, + bibkey = {hennicker.ea:precise:2002}, + acknowledgement={brucker, 2007-02-19}, + tags = {MDE}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Proceedings{ clark.ea:object:2002, + editor = {Tony Clark and Jos Warmer}, + booktitle = {Object Modeling with the \acs{ocl}: The Rationale behind + the Object Constraint Language}, + title = {Object Modeling with the \acs{ocl}: The Rationale behind + the Object Constraint Language}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 2263, + year = 2002, + isbn = {3-540-43169-1}, + acknowledgement={brucker, 2007-02-19}, + tags = {MDE}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ cengarle.ea:formal:2001, + author = {Mar\'{\i}a Victoria Cengarle and Alexander Knapp}, + title = {A Formal Semantics for \acs{ocl} 1.4}, + year = 2001, + abstract = {The OCL 1.4 specification introduces let-declarations for + adding auxiliary class features in static structures of the + UML. We provide a type inference system and a big-step + operational semantics for the OCL 1.4 that treat UML static + structures and UML object models and accommodate for + additional declarations; the operational semantics + satisfies a subject reduction property with respect to the + type inference system. We also discuss an alternative, + non-operational interpretation of let-declarations as + constraints.}, + pages = {118--133}, + crossref = {gogolla.ea:uml:2001}, + acknowledgement={brucker, 2007-02-19}, + tags = {MDE}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Proceedings{ gogolla.ea:uml:2001, + editor = {Martin Gogolla and Cris Kobryn}, + booktitle = {\acs{uml} 2001---The Unified Modeling Language. Modeling + Languages, Concepts, and Tools}, + title = {\acs{uml} 2001---The Unified Modeling Language. Modeling + Languages, Concepts, and Tools}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 2185, + year = 2001, + isbn = {3-540-42667-1}, + location = {Toronto, Canada}, + acknowledgement={brucker, 2007-02-19}, + tags = {MDE}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@TechReport{ balzer.ea:objects:2008, + author = {Stephanie Balzer and Alexandra Burns and Thomas R. Gross}, + title = {Objects in Context: An Empirical Study of Object + Relationships}, + institution = {\acs{eth} Zurich}, + year = 2008, + abstract = {Object collaborations are at the core of all + object-oriented programming, yet current class-based + objectoriented programming languages do not provide an + explicit construct to capture the relationships between + objects. This paper reports on an empirical study that + investigates the occurrence of object collaborations to + assess the need of intrinsic support for relationships in a + programming language. We introduce a categorization of + possible forms of object collaborations and their + corresponding implementation patterns when using a + traditional class-based object-oriented language (Java) and + analyze 25 Java programs (ranging from 4 to 6275 classes) + with the Relationship Detector for Java (RelDJ) to identify + occurrences of these patterns. The empirical results show + that object collaborations are indeed a frequent phenomenon + and reveal that collaborationrelated code does not remain + encapsulated in a single class. These observations strongly + support efforts to define language constructs to express + object relationships: relationships allow the encapsulation + of a frequently occurring phenomenon and increase program + expressiveness. }, + keywords = {Relationship-based Programming Languages, First-class + Relationships, Object Collaborations, Java, Bytecode + Analysis}, + tags = {ReadingList, OOP}, + clearance = {unclassified}, + timestap = {2008-05-28}, + number = 594 +} + +@InProceedings{ owre.ea:pvs:1996, + author = {Sam Owre and S. Rajan and John M. Rushby and Natarajan + Shankar and Mandayam K. Srivas}, + title = {\acs{pvs}: Combining Specification, Proof Checking, and + Model Checking}, + year = 1996, + bibkey = {owre.ea:pvs:1996}, + pages = {411--414}, + crossref = {alur.ea:computer:1996}, + doi = {10.1007/3-540-61474-5_91}, + acknowledgement={brucker, 2007-02-19}, + tags = {TheoremProving, FormalMethods}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Proceedings{ alur.ea:computer:1996, + editor = {Rajeev Alur and Thomas A. Henzinger}, + booktitle = {Computer Aided Verification (\acs{cav})}, + title = {Computer Aided Verification (\acs{cav})}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 1102, + year = 1996, + location = {New Brunswick, \acs{nj}, \acs{usa}}, + doi = {10.1007/3-540-61474-5}, + isbn = {3-540-61474-5}, + acknowledgement={brucker, 2007-02-19}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ naraschewski.ea:object-oriented:1998, + author = {Wolfgang Naraschewski and Markus Wenzel}, + title = {Object-Oriented Verification Based on Record Subtyping in + Higher-Order Logic.}, + pages = {349--366}, + doi = {10.1007/BFb0055146}, + crossref = {grundy.ea:theorem:1998}, + abstract = {We show how extensible records with structural subtyping + can be represented directly in Higher-Order Logic + (\acs{hol}). Exploiting some specific properties of + \acs{hol}, this encoding turns out to be extremely simple. + In particular, structural subtyping is subsumed by naive + parametric polymorphism, while overridable generic + functions may be based on overloading. Taking \acs{hol} + plus extensible records as a starting point, we then set + out to build an environment for object-oriented + specification and verification (HOOL). This framework + offers several well-known concepts like classes, objects, + methods and late-binding. All of this is achieved by very + simple means within \acs{hol}. }, + keywords = {Isabelle/\acs{hol}, extensible records, + object-orientation, verification}, + bibkey = {naraschewski.ea:object-oriented:1998}, + acknowledgement={brucker, 2007-02-19}, + tags = {TheoremProving, FormalMethods}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Proceedings{ grundy.ea:theorem:1998, + editor = {Jim Grundy and Malcolm C. Newey}, + title = {Theorem Proving in Higher Order Logics (\acs{tphols})}, + booktitle = {Theorem Proving in Higher Order Logics (\acs{tphols})}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 1479, + year = 1998, + doi = {10.1007/BFb0055125}, + isbn = {3-540-64987-5}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ oheimb.ea:hoare:2002, + author = {David von Oheimb and Tobias Nipkow}, + title = {Hoare Logic for {NanoJava}: Auxiliary Variables, Side + Effects, and Virtual Methods Revisited}, + pages = {89--105}, + doi = {10.1007/3-540-45614-7_6}, + crossref = {eriksson.ea:fme:2002}, + acknowledgement={brucker, 2007-02-19}, + abstract = {We define NanoJava, a kernel of Java tailored to the + investigation of Hoare logics. We then introduce a Hoare + logic for this language featuring an elegant new approach + for expressing auxiliary variables: by universal + quantification on the outer logical level. Furthermore, we + give simple means of handling side-effecting expressions + and dynamic binding within method calls. The logic is + proved sound and (relatively) complete using + Isabelle/\acs{hol}.}, + keywords = {Languages, Reliability, Theory, Verification}, + tags = {OOP, FormalMethods}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Proceedings{ eriksson.ea:fme:2002, + editor = {Lars-Henrik Eriksson and Peter Alexander Lindsay}, + booktitle = {\acs{fme} 2002: Formal Methods---Getting {IT} Right}, + title = {\acs{fme} 2002: Formal Methods---Getting {IT} Right}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 2391, + doi = {10.1007/3-540-45614-7}, + year = 2002, + isbn = {3-540-43928-5}, + acknowledgement={brucker, 2007-02-19}, + tags = {noTAG}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@Article{ rudnicki:obvious:1987, + author = {Piotr Rudnicki}, + key = {Rudnicki}, + journal = j-ar, + title = {Obvious Inferences}, + year = 1987, + month = dec, + volume = 3, + doi = {10.1007/BF00247436}, + number = 4, + abstract = {The notion of 'obvious' inference in predicate logic is + discussed from the viewpoint of proof- checker applications + in logic and mathematics education. A class of inferences + in predicate logic is defined and it is proposed to + identify it with the class of 'obvious' logical inferences. + The definition is compared with other approaches. The + algorithm for implementing the "obviousness' decision + procedure follows directly from the definition.}, + pages = {383--394}, + publisher = pub-springer-netherlands, + address = pub-springer-netherlands:adr, + tags = {noTAG}, + timestap = {2008-05-26} +} + +@InProceedings{ stroustrup:what:1987, + author = {Bjarne Stroustrup}, + title = {What is "Object-Oriented Programming?"}, + booktitle = {ECOOP}, + year = 1987, + pages = {51--70}, + abstract = {"Object-Oriented Programming" and "Data ion" have become + very common terms. Unfortunately, few people agree on what + they mean. I will offer informal definitions that appear to + make sense in the context of languages like Ada, C++, + Modula-2, Simula67, and Smalltalk. The general idea is to + equate "support for data abstraction" with the ability to + define and use new types and equate "support for + object-oriented programming" with the ability to express + type hierarchies. Features necessary to support these + programming styles in a general purpose programming + language will be discussed. The presentation centers around + C++ but is not limited to facilities provided by that + language.}, + crossref = {bezivin.ea:ecoop87:1987} +} + +@Proceedings{ bezivin.ea:ecoop87:1987, + editor = {Jean B{\'e}zivin and Jean-Marie Hullot and Pierre Cointe + and Henry Lieberman}, + title = {ECOOP'87 European Conference on Object-Oriented + Programming, Paris, France, June 15-17, 1987, Proceedings}, + booktitle = {ECOOP}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 276, + year = 1987, + isbn = {3-540-18353-1}, + location = {Paris, France} +} + +@Book{ nipkow.ea:isabelle:2002, + author = {Tobias Nipkow and Lawrence C. Paulson and Markus Wenzel}, + title = {Isabelle/\acs{hol}---A Proof Assistant for Higher-Order + Logic}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 2283, + doi = {10.1007/3-540-45949-9}, + abstract = {This book is a self-contained introduction to interactive + proof in higher-order logic (\acs{hol}), using the proof + assistant Isabelle2002. It is a tutorial for potential + users rather than a monograph for researchers. The book has + three parts. + + 1. Elementary Techniques shows how to model functional + programs in higher-order logic. Early examples involve + lists and the natural numbers. Most proofs are two steps + long, consisting of induction on a chosen variable followed + by the auto tactic. But even this elementary part covers + such advanced topics as nested and mutual recursion. 2. + Logic and Sets presents a collection of lower-level tactics + that you can use to apply rules selectively. It also + describes Isabelle/\acs{hol}'s treatment of sets, functions + and relations and explains how to define sets inductively. + One of the examples concerns the theory of model checking, + and another is drawn from a classic textbook on formal + languages. 3. Advanced Material describes a variety of + other topics. Among these are the real numbers, records and + overloading. Advanced techniques are described involving + induction and recursion. A whole chapter is devoted to an + extended example: the verification of a security protocol. }, + year = 2002, + acknowledgement={brucker, 2007-02-19}, + bibkey = {nipkow.ea:isabelle:2002}, + tags = {noTAG}, + clearance = {unclassified}, + timestap = {2008-05-26} +} + +@InProceedings{ kerber.ea:mechanization:1994, + author = {Manfred Kerber and Michael Kohlhase}, + title = {A Mechanization of Strong Kleene Logic for Partial + Functions}, + pages = {371--385}, + crossref = {bundy:automated:1994}, + abstract = {Even though it is not very often admitted, partial + functions do play a significant role in many practical + applications of deduction systems. Kleene has already given + a semantic account of partial functions using three-valued + logic decades ago, but there has not been a satisfactory + mechanization. Recent years have seen a thorough + investigation of the framework of many-valued + truth-functional logics. However, strong Kleene logic, + where quantification is restricted and therefore not + truth-functional, does not fit the framework directly. We + solve this problem by applying recent methods from sorted + logics. This paper presents a resolution calculus that + combines the proper treatment of partial functions with the + efficiency of sorted calculi.}, + doi = {10.1007/3-540-58156-1_26}, + acknowledgement={brucker, 2007-02-19}, + bibkey = {kerber.ea:mechanization:1994} +} + +@Proceedings{ bundy:automated:1994, + editor = {Alan Bundy}, + booktitle = {Automated Deduction---\acs{cade}-12}, + title = {Automated Deduction---\acs{cade}-12}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + location = {Nancy, France}, + volume = 814, + year = 1994, + isbn = {3-540-58156-1}, + acknowledgement={brucker, 2007-02-19}, + doi = {10.1007/3-540-58156-1} +} + +@InProceedings{ hahnle:towards:1991, + author = {Reiner H{\"a}hnle}, + title = {Towards an Efficient Tableau Proof Procedure for + Multiple-Valued Logics}, + pages = {248--260}, + crossref = {borger.ea:computer:1991}, + doi = {10.1007/3-540-54487-9_62}, + abstract = {One of the obstacles against the use of tableau-based + theorem provers for non-standard logics is the inefficiency + of tableau systems in practical applications, though they + are highly intuitive and extremely flexible from a proof + theoretical point of view. We present a method for + increasing the efficiency of tableau systems in the case of + multiple-valued logics by introducing a generalized notion + of signed formulas and give sound and complete tableau + systems for arbitrary propositional finite-valued logics.}, + acknowledgement={brucker, 2007-02-19}, + bibkey = {hahnle:towards:1991} +} + +@Proceedings{ borger.ea:computer:1991, + editor = {Egon B{\"o}rger and Hans Kleine B{\"u}ning and Michael M. + Richter and Wolfgang Sch{\"o}nfeld}, + title = {Computer Science Logic (\acs{csl})}, + booktitle = {Computer Science Logic (\acs{csl})}, + series = s-lncs, + volume = 533, + year = 1991, + doi = {10.1007/3-540-54487-9}, + isbn = {978-3-540-54487-6}, + acknowledgement={brucker, 2007-02-19}, + publisher = pub-springer, + address = pub-springer:adr +} + +@InProceedings{ berghofer.ea:inductive:1999, + author = {Stefan Berghofer and Markus Wenzel}, + title = {Inductive datatypes in \acs{hol}---lessons learned in + Formal-Logic Engineering}, + pages = {19--36}, + crossref = {bertot.ea:theorem:1999}, + bibkey = {berghofer.ea:inductive:1999}, + month = sep, + doi = {10.1007/3-540-48256-3_3}, + acknowledgement={brucker, 2007-02-19} +} + +@Proceedings{ bertot.ea:theorem:1999, + editor = {Yves Bertot and Gilles Dowek and Andr{\'e} Hirschowitz and + C. Paulin and Laurent Th{\'e}ry}, + title = {Theorem Proving in Higher Order Logics (\acs{tphols})}, + booktitle = {Theorem Proving in Higher Order Logics (\acs{tphols})}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 1690, + acknowledgement={brucker, 2007-02-19}, + location = {Nice, France}, + year = 1999, + isbn = {3-540-66463-7} +} + +@Proceedings{ geuvers.ea:types:2003, + editor = {Herman Geuvers and Freek Wiedijk}, + title = {Types for Proofs and Programs (\acs{types})}, + booktitle = {Types for Proofs and Programs (\acs{types})}, + publisher = pub-springer, + location = {Nijmegen}, + address = pub-springer:adr, + series = s-lncs, + volume = 2646, + language = {USenglish}, + year = 2003, + isbn = {3-540-14031-X}, + acknowledgement={brucker, 2007-02-19} +} + +@InProceedings{ angelo.ea:degrees:1994, + author = {Catia M. Angelo and Luc J. M. Claesen and Hugo De Man}, + title = {Degrees of Formality in Shallow Embedding Hardware + Description Languages in \acs{hol}}, + pages = {89--100}, + doi = {10.1007/3-540-57826-9_127}, + crossref = {joyce.ea:higher:1994}, + bibkey = {angelo.ea:degrees:1994}, + acknowledgement={brucker, 2007-02-19} +} + +@Proceedings{ joyce.ea:higher:1994, + editor = {Jeffrey J. Joyce and Carl-Johan H. Seger}, + title = {Higher Order Logic Theorem Proving and Its Applications + (\acs{hug})}, + booktitle = {Higher Order Logic Theorem Proving and Its Applications + (\acs{hug})}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + abstract = {Theorem proving based techniques for formal hardware + verification have been evolving constantly and researchers + are getting able to reason about more complex issues than + it was possible or practically feasible in the past. It is + often the case that a model of a system is built in a + formal logic and then reasoning about this model is carried + out in the logic. Concern is growing on how to consistently + interface a model built in a formal logic with an informal + CAD environment. Researchers have been investigating how to + define the formal semantics of hardware description + languages so that one can formally reason about models + informally dealt with in a CAD environment. At the + University of Cambridge, the embedding of hardware + description languages in a logic is classified in two + categories: deep embedding and shallow embedding. In this + paper we argue that there are degrees of formality in + shallow embedding a language in a logic. The choice of the + degree of formality is a trade-off between the security of + the embedding and the amount and complexity of the proof + effort in the logic. We also argue that the design of a + language could consider this verifiability issue. There are + choices in the design of a language that can make it easier + to improve the degree of formality, without implying + serious drawbacks for the CAD environment.}, + volume = 780, + year = 1994, + doi = {10.1007/3-540-57826-9}, + isbn = {3-540-57826-9}, + acknowledgement={brucker, 2007-02-19} +} + +@InProceedings{ huffman.ea:axiomatic:2005, + author = {Brian Huffman and John Matthews and Peter White}, + title = {Axiomatic Constructor Classes in {Isabelle}/\acs{holcf}.}, + pages = {147--162}, + doi = {10.1007/11541868_10}, + crossref = {hurd.ea:theorem:2005}, + acknowledgement={brucker, 2007-02-19}, + bibkey = {huffman.ea:axiomatic:2005}, + abstract = {We have definitionally extended Isabelle/HOLCF to support + axiomatic Haskell-style constructor classes. We have + subsequently defined the functor and monad classes, + together with their laws, and implemented state and + resumption monad transformers as generic constructor class + instances. This is a step towards our goal of giving + modular denotational semantics for concurrent lazy + functional programming languages, such as GHC Haskell.} +} + +@InProceedings{ marche.ea:reasoning:2005, + author = {Claude March{\'e} and Christine Paulin-Mohring}, + title = {Reasoning About {Java} Programs with Aliasing and Frame + Conditions}, + pages = {179--194}, + crossref = {hurd.ea:theorem:2005}, + abstract = {Several tools exist for reasoning about Java programs + annotated with JML specifications. A main issue is to deal + with possible aliasing between objects and to handle + correctly the frame conditions limiting the part of memory + that a method is allowed to modify. Tools designed for + automatic use (like ESC/Java) are not complete and even not + necessarily correct. On the other side, tools which offer a + full modeling of the program require a heavy user + interaction for discharging proof obligations. In this + paper, we present the modeling of Java programs used in the + Krakatoa tool, which generates proof obligations expressed + in a logic language suitable for both automatic and + interactive reasoning. Using the Simplify automatic theorem + prover, we are able to establish automatically more + properties than static analysis tools, with a method which + is guaranteed to be sound, assuming only the correctness of + our logical interpretation of programs and + specifications.}, + doi = {10.1007/11541868_12}, + acknowledgement={brucker, 2007-02-19}, + bibkey = {marche.ea:reasoning:2005} +} + +@Proceedings{ hurd.ea:theorem:2005, + editor = {Joe Hurd and Thomas F. Melham}, + title = {Theorem Proving in Higher Order Logics (\acs{tphols})}, + booktitle = {Theorem Proving in Higher Order Logics (\acs{tphols})}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 3603, + doi = {10.1007/11541868}, + year = 2005, + isbn = {978-3-540-28372-0}, + acknowledgement={brucker, 2007-02-19} +} + +@InProceedings{ leino.ea:modular:2005, + author = {K. Rustan M. Leino and Peter M{\"u}ller}, + title = {Modular Verification of Static Class Invariants.}, + pages = {26--42}, + doi = {10.1007/11526841_4}, + abstract = {Object invariants describe the consistency of + object-oriented data structures and are central to + reasoning about the correctness of object-oriented + software. But object invariants are not the only + consistency conditions on which a program may depend. The + data in object-oriented programs consists not just of + object fields, but also of static fields, which hold data + that is shared among objects. The consistency of static + fields is described by static class invariants, which are + enforced at the class level. Static class invariants can + also mention instance fields, describing the consistency of + dynamic data structures rooted in static fields. Sometimes + there are even consistency conditions that relate the + instance fields of many or all objects of a class; static + class invariants describe these relations, too, since they + cannot be enforced by any one object in isolation. This + paper presents a systematic way (a methodology) for + specifying and verifying static class invariants in + object-oriented programs. The methodology supports the + three major uses of static fields and invariants in the + Java library. The methodology is amenable to static, + modular verification and is sound.}, + crossref = {fitzgerald.ea:fm:2005}, + acknowledgement={brucker, 2007-02-19} +} + +@InProceedings{ basin.ea:verification:2005, + author = {David A. Basin and Hironobu Kuruma and Kazuo Takaragi and + Burkhart Wolff}, + abstract = {We report on a case study in using \holz, an embedding of + Z in higher-order logic, to specify and verify a security + architecture for administering digital signatures. We have + used \holz{} to formalize and combine both data-oriented + and process-oriented architectural views. Afterwards, we + formalized temporal requirements in Z and carried out + verification in higher-order logic. The same architecture + has been previously verified using the SPIN model checker. + Based on this, we provide a detailed comparison of these + two di erent approaches to formalization (infinite state + with rich data types versus finite state) and verification + (theorem proving versus model checking). Contrary to common + belief, our case study suggests that Z is well suited for + temporal reasoning about process models with rich data. + Moreover, our comparison highlights the advantages of this + approach and provides evidence that, in the hands of + experienced users, theorem proving is neither substantially + more time-consuming nor more complex than model checking.}, + title = {Verification of a Signature Architecture with \holz}, + pages = {269--285}, + crossref = {fitzgerald.ea:fm:2005}, + language = {USenglish}, + acknowledgement={brucker, 2007-02-19}, + doi = {10.1007/11526841_19}, + bibkey = {basin.ea:verification:2005} +} + +@Proceedings{ fitzgerald.ea:fm:2005, + editor = {John Fitzgerald and Ian J. Hayes and Andrzej Tarlecki}, + booktitle = {{FM} 2005: Formal Methods}, + title = {{FM} 2005: Formal Methods}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 3582, + year = 2005, + acknowledgement={brucker, 2007-02-19}, + doi = {10.1007/11526841}, + isbn = {978-3-540-27882-5}, + location = {Newcastle, UK} +} + +@InProceedings{ barnett.ea:spec:2004, + author = {Mike Barnett and K. Rustan M. Leino and Wolfram Schulte}, + abstract = "Spec# is the latest in a long line of work on programming + languages and systems aimed at improving the development of + correct software. This paper describes the goals and + architecture of the Spec# programming system, consisting of + the object-oriented Spec# programming language, the Spec# + compiler, and the Boogie static program verifier. The + language includes constructs for writing specifications + that capture programmer intentions about how methods and + data are to be used, the compiler emits run-time checks to + enforce these specifications, and the verifier can check + the consistency between a program and its specifications.", + language = {USenglish}, + title = {The {\Specsharp} programming system: An overview}, + pages = {49--69}, + crossref = {barthe.ea:construction:2005}, + bibkey = {barnett.ea:spec:2004}, + doi = {10.1007/b105030}, + acknowledgement={brucker, 2007-02-19}, + month = may # {~25} +} + +@Proceedings{ barthe.ea:construction:2005, + editor = {Gilles Barthe and Lilian Burdy and Marieke Huisman and + Jean-Louis Lanet and Traian Muntean}, + title = {Construction and Analysis of Safe, Secure, and + Interoperable Smart Devices (\acs{cassis})}, + booktitle = {Construction and Analysis of Safe, Secure, and + Interoperable Smart Devices (\acs{cassis})}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 3362, + year = 2005, + isbn = {978-3-540-24287-1}, + acknowledgement={brucker, 2007-02-19}, + doi = {10.1007/b105030} +} + +@InProceedings{ jacobs.ea:java:2004, + author = {Bart Jacobs and Erik Poll}, + title = {{Java} Program Verification at {Nijmegen}: Developments + and Perspective.}, + doi = {10.1007/b102118}, + pages = {134--153}, + acknowledgement={brucker, 2007-02-19}, + abstract = {This paper presents a historical overview of the work on + Java program verification at the University of Nijmegen + (the Netherlands) over the past six years (1997-2003). It + describes the development and use of the LOOP tool that is + central in this work. Also, it gives a perspective on the + field.}, + crossref = {futatsugi.ea:software:2004} +} + +@Proceedings{ futatsugi.ea:software:2004, + editor = {Kokichi Futatsugi and Fumio Mizoguchi and Naoki Yonezaki}, + title = {Software Security---Theories and Systems (\acs{isss})}, + booktitle = {Software Security---Theories and Systems (\acs{isss})}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + acknowledgement={brucker, 2007-02-19}, + volume = 3233, + year = 2004, + doi = {10.1007/b102118}, + isbn = {978-3-540-23635-1} +} + +@InProceedings{ meyer.ea:architecture:2000, + author = {J{\"o}rg Meyer and Arnd Poetzsch-Heffter}, + title = {An Architecture for Interactive Program Provers}, + abstract = {Formal specification and verification techniques can + improve the quality of programs by enabling the analysis + and proof of semantic program properties. This paper + describes the modular architecture of an interactive + program prover that we are currently developing for a Java + subset. In particular, it discusses the integration of a + programming language-specific prover component with a + general purpose theorem prover.}, + pages = {63--77}, + crossref = {graf.ea:tools:2000} +} + +@Proceedings{ graf.ea:tools:2000, + editor = {Susanne Graf and Michael I. Schwartzbach}, + booktitle = {Tools and Algorithms for the Construction and Analysis of + Systems (\acs{tacas})}, + title = {Tools and Algorithms for the Construction and Analysis of + Systems (\acs{tacas})}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 1785, + year = 2000, + isbn = {3-540-67282-6} +} + +@InProceedings{ markovic.ea:ocl:2006, + author = {Sali{\v s}a Markovi{\'c} and Thomas Baar}, + language = {USenglish}, + doi = {10.1007/11880240_46}, + acknowledgement={brucker, 2007-02-19}, + pages = {661--675}, + title = {An {\acs{ocl}} Semantics Specified with {\textsc{qvt}}}, + crossref = {nierstrasz.ea:model:2006}, + abstract = {Metamodeling became in the last decade a widely accepted + tool to describe the (abstract) syntax of modeling + languages in a concise, but yet precise way. For the + description of the language's semantics, the situation is + less satisfactory and formal semantics definitions are + still seen as a challenge. In this paper, we propose an + approach to specify the semantics of modeling languages in + a graphical way. As an example, we describe the evaluation + semantics of OCL by transformation rules written in the + graphical formalism QVT. We believe that the graphical + format of our OCL semantics has natural advantages with + respect to understandability compared to existing + formalizations of OCL's semantics. Our semantics can also + be seen as a reference implementation of an OCL evaluator, + because the transformation rules can be executed by any QVT + compliant transformation engine.} +} + +@InProceedings{ pons.ea:ocl-based:2006, + author = {Claudia Pons and Diego Garcia}, + title = {An {OCL}-Based Technique for Specifying and Verifying + Refinement-Oriented Transformations in {MDE}}, + booktitle = {MoDELS}, + year = 2006, + pages = {646--660}, + doi = {10.1007/11880240_45}, + crossref = {nierstrasz.ea:model:2006} +} + +@InProceedings{ kosiuczenko:specification:2006, + author = {Piotr Kosiuczenko}, + title = {Specification of Invariability in \acs{ocl}}, + pages = {676--691}, + doi = {10.1007/11880240_47}, + crossref = {nierstrasz.ea:model:2006}, + abstract = {The paradigm of contractual specification provides a + transparent way of specifying systems. It clearly + distinguishes between client and implementer obligations. + One of the best known languages used for this purpose is + OCL. Nevertheless, OCL does not provide primitives for a + compact specification of what remains unchanged when a + method is executed. In this paper, problems with specifying + invariability are listed and some weaknesses of existing + solutions are pointed out. The question of specifying + invariability in OCL is studied and a simple but expressive + and flexible extension is proposed. It is shown that this + extension has a simple OCL based semantics.} +} + +@Proceedings{ nierstrasz.ea:model:2006, + editor = {Oscar Nierstrasz and Jon Whittle and David Harel and + Gianna Reggio}, + title = {Model Driven Engineering Languages and Systems + (\acs{models})}, + booktitle = {Model Driven Engineering Languages and Systems + (\acs{models})}, + address = pub-springer:adr, + location = {Genova, Italy}, + publisher = pub-springer, + series = s-lncs, + acknowledgement={brucker, 2007-02-19}, + volume = 4199, + year = 2006, + doi = {10.1007/11880240}, + isbn = {978-3-540-45772-5} +} + +@InProceedings{ syme:proving:1999, + author = {Don Syme}, + title = {Proving {Java} Type Soundness}, + pages = {83--118}, + crossref = {alves-foss:formal:1999}, + acknowledgement={brucker, 2007-02-19}, + abstract = {This chapter describes a machine checked proof of the type + soundness of a subset of Java (we call this subset + Javatex2html_wrap_inline102). In Chapter 3, a formal + semantics for approximately the same subset was presented + by Drossopoulou and Eisenbach. The work presented here + serves two roles: it complements the written semantics by + correcting and clarifying some details; and it demonstrates + the utility of formal, machine checking when exploring a + large and detailed proof based on operational semantics.}, + bibkey = {syme:proving:1999} +} + +@InProceedings{ flatt.ea:programmers:1999, + author = {Matthew Flatt and Shriram Krishnamurthi and Matthias + Felleisen}, + title = {A Programmer's Reduction Semantics for Classes and + Mixins.}, + doi = {10.1007/3-540-48737-9_7}, + pages = {241--269}, + crossref = {alves-foss:formal:1999}, + acknowledgement={brucker, 2007-02-19}, + abstract = {While class-based object-oriented programming languages + provide a flexible mechanism for re-using and managing + related pieces of code, they typically lack linguistic + facilities for specifying a uniform extension of many + classes with one set of fields and methods. As a result, + programmers are unable to express certain abstractions over + classes. In this paper we develop a model of class-to-class + functions that we refer to as mixins. A mixin function maps + a class to an extended class by adding or overriding fields + and methods. Programming with mixins is similar to + programming with single inheritance classes, but mixins + more directly encourage programming to interfaces. The + paper develops these ideas within the context of Java. The + results are an intuitive model of an essential Java subset; + an extension that explains and models mixins; and type + soundness theorems for these languages.} +} + +@InProceedings{ drossopoulou.ea:describing:1999, + author = {Sophia Drossopoulou and Susan Eisenbach}, + title = {Describing the Semantics of {Java} and Proving Type + Soundness}, + pages = {41--82}, + doi = {10.1007/3-540-48737-9_2}, + crossref = {alves-foss:formal:1999}, + acknowledgement={brucker, 2007-02-19}, + abstract = {Java combines the experience from the development of + several object oriented languages, such as C++, Smalltalk + and CLOS. The philosophy of the language designers was to + include only features with already known semantics, and to + provide a small and simple language. + + Nevertheless, we feel that the introduction of some new + features in Java, as well as the specific combination of + features, justifies a study of the Java formal semantics. + The use of interfaces, reminiscent of [6,10] is a + simplification of the signatures extension for C++ [4] and + is - to the best of our knowledge - novel. The mechanism + for dynamic method binding is that of C++, but we know of + no formal definition. Java adopts the Smalltalk [15] + approach whereby all object variables are implicitly + pointers. + + Furthermore, although there are a large number of studies + of the semantics of isolated programming language features + or of minimal programming languages [1,31,34] there have + not been many studies of the formal semantics of actual + programming languages. In addition, the interplay of + features which are very well understood in isolation, might + introduce unexpected effects. } +} + +@InProceedings{ oheimb.ea:machine-checking:1999, + author = {David von Oheimb and Tobias Nipkow}, + title = {Machine-Checking the {Java} Specification: Proving + Type-Safety}, + pages = {119--156}, + crossref = {alves-foss:formal:1999}, + acknowledgement={brucker, 2007-02-19}, + bibkey = {oheimb.ea:machine-checking:1999} +} + +@Proceedings{ alves-foss:formal:1999, + editor = {Jim Alves-Foss}, + title = {Formal Syntax and Semantics of {Java}}, + booktitle = {Formal Syntax and Semantics of {Java}}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 1523, + year = 1999, + isbn = {3-540-66158-1}, + acknowledgement={brucker, 2007-02-19}, + bibkey = {alves-foss:formal:1999} +} + +@InProceedings{ smith.ea:encoding:2002, + author = {Graeme Smith and Florian Kamm{\"u}ller and Thomas Santen}, + title = {Encoding {Object-Z} in {Isabelle}/{\acs{hol}}.}, + pages = {82--99}, + doi = {10.1007/3-540-45648-1_5}, + crossref = {bert.ea:zb:2002}, + abstract = {In this paper, we present a formalization of the reference + semantics of Object-Z in the higher-order logic (HOL) + instantiation of the generic theorem prover Isabelle, + Isabelle/HOL. This formalization has the effect of both + clarifying the semantics and providing the basis for a + theorem prover for Object-Z. The work builds on an earlier + encoding of a value semantics for object-oriented Z in + Isabelle/HOL and a denotational semantics of Object-Z based + on separating the internal and external effects of class + methods.}, + keywords = {Object-Z, reference semantics, higher-order logic, + Isabelle}, + acknowledgement={brucker, 2007-02-19} +} + +@Proceedings{ bert.ea:zb:2002, + editor = {Didier Bert and Jonathan P. Bowen and Martin C. Henson and + Ken Robinson}, + title = {{ZB} 2002: Formal Specification and Development in {Z} and + {B}}, + booktitle = {{ZB} 2002: Formal Specification and Development in {Z} and + {B}}, + location = {Grenoble, France}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 2272, + year = 2002, + isbn = {3-540-43166-7}, + acknowledgement={brucker, 2007-02-19}, + bibkey = {bert.ea:zb:2002} +} + +@InProceedings{ paulson:formulation:1990, + author = {Lawrence C. Paulson}, + title = {A formulation of the simple theory of types (for + {Isabelle})}, + pages = {246--274}, + doi = {10.1007/3-540-52335-9_58}, + crossref = {martin-lof.ea:colog-88:1990}, + acknowledgement={brucker, 2007-02-19}, + abstract = {Simple type theory is formulated for use with the generic + theorem prover Isabelle. This requires explicit type + inference rules. There are function, product, and subset + types, which may be empty. Descriptions (the eta-operator) + introduce the Axiom of Choice. Higher-order logic is + obtained through reflection between formulae and terms of + type bool. Recursive types and functions can be formally + constructed. Isabelle proof procedures are described. The + logic appears suitable for general mathematics as well as + computational problems. } +} + +@Proceedings{ martin-lof.ea:colog-88:1990, + editor = {Per Martin-L{\"o}f and Grigori Mints}, + title = {\acs{colog}-88}, + booktitle = {\acs{colog}-88}, + location = {Tallinn, USSR}, + publisher = pub-springer, + acknowledgement={brucker, 2007-02-19}, + address = pub-springer:adr, + doi = {10.1007/3-540-52335-9}, + series = s-lncs, + volume = 417, + year = 1990, + isbn = {3-540-52335-9} +} + +@InProceedings{ beckert.ea:dynamic:2006, + author = {Bernhard Beckert and Andr{\'e} Platzer}, + title = {Dynamic Logic with Non-rigid Functions.}, + pages = {266--280}, + acknowledgement={brucker, 2007-02-19}, + doi = {10.1007/11814771_23}, + abstract = {We introduce a dynamic logic that is enriched by non-rigid + functions, i.e., functions that may change their value from + state to state (during program execution), and we present a + (relatively) complete sequent calculus for this logic. In + conjunction with dynamically typed object enumerators, + non-rigid functions allow to embed notions of + object-orientation in dynamic logic, thereby forming a + basis for verification of object-oriented programs. A + semantical generalisation of substitutions, called state + update, which we add to the logic, constitutes the central + technical device for dealing with object aliasing during + function modification. With these few extensions, our + dynamic logic captures the essential aspects of the complex + verification system KeY and, hence, constitutes a + foundation for object-oriented verification with the + principles of reasoning that underly the successful KeY + case studies.}, + crossref = {furbach.ea:automated:2006} +} + +@Proceedings{ furbach.ea:automated:2006, + editor = {Ulrich Furbach and Natarajan Shankar}, + doi = {10.1007/11814771}, + title = {Automated Reasoning (\acs{ijcar})}, + booktitle = {Automated Reasoning (\acs{ijcar})}, + location = {Seattle, WA}, + publisher = pub-springer, + address = pub-springer:adr, + acknowledgement={brucker, 2007-02-19}, + series = s-lncs, + volume = 4130, + year = 2006, + isbn = {978-3-540-37187-8} +} + +@InProceedings{ yatake.ea:implementing:2005, + author = {Kenro Yatake and Toshiaki Aoki and Takuya Katayama}, + title = {Implementing Application-Specific Object-Oriented Theories + in {\acs{hol}}}, + acknowledgement={brucker, 2007-02-19}, + doi = {10.1007/11560647_33}, + pages = {501--516}, + abstract = {This paper presents a theory of Object-Oriented concepts + embedded shallowly in HOL for the verification of OO + analysis models. The theory is application-specific in the + sense that it is automatically constructed depending on the + type information of the application. This allows objects to + have attributes of arbitrary types, making it possible to + verify models using not only basic types but also highly + abstracted types specific to the target domain. The theory + is constructed by definitional extension based on the + operational semantics of a heap memory model, which + guarantees the soundness of the theory. This paper mainly + focuses on the implementation details of the theory.}, + crossref = {hung.ea:theoretical:2005} +} + +@Proceedings{ hung.ea:theoretical:2005, + editor = {Dang Van Hung and Martin Wirsing}, + title = {Theoretical Aspects of Computing---\acs{ictac} 2005}, + booktitle = {Theoretical Aspects of Computing---\acs{ictac} 2005}, + location = {Hanoi, Vietnam}, + publisher = pub-springer, + address = pub-springer:adr, + doi = {10.1007/11560647}, + series = s-lncs, + acknowledgement={brucker, 2007-02-19}, + volume = 3722, + year = 2005, + isbn = {3-540-29107-5} +} + +@InProceedings{ aspinall:proof:2000, + author = {David Aspinall}, + title = {{P}roof {G}eneral: A Generic Tool for Proof Development}, + acknowledgement={brucker, 2007-02-19}, + pages = {38--42}, + crossref = {graf.ea:tools:2000-b}, + abstract = {This note describes Proof General, a tool for developing + machine proofs with an interactive proof assistant. + Interaction is based around a proof script, which is the + target of a proof development. Proof General provides a + powerful user-interface with relatively little effort, + alleviating the need for a proof assistant to provide its + own GUI, and providing a uniform appearance for diverse + proof assistants. + + Proof General has a growing user base and is currently used + for several interactive proof systems, including Coq, LEGO, + and Isabelle. Support for others is on the way. Here we + give a brief overview of what Proof General does and the + philosophy behind it; technical details are available + elsewhere. The program and user documentation are available + on the web at http://www.dcs.ed.ac.uk/home/proofgen.} +} + +@InProceedings{ beckert.ea:many-valued:1992, + author = {Bernhard Beckert and Stefan Gerberding and Reiner + H{\"a}hnle and Werner Kernig}, + title = {The Many-Valued Tableau-Based Theorem Prover {\threeTAP}}, + acknowledgement={brucker, 2007-02-19}, + pages = {758--760}, + bibkey = {beckert.ea:many-valued:1992}, + crossref = {kapur:automated:1992}, + doi = {10.1007/3-540-55602-8_219} +} + +@Proceedings{ kapur:automated:1992, + editor = {Deepak Kapur}, + title = {Automated Deduction---\acs{cade}-11}, + booktitle = {Automated Deduction---\acs{cade}-11}, + location = {Saratoga Springs, \acs{ny}, \acs{usa}}, + publisher = pub-springer, + address = pub-springer:adr, + doi = {10.1007/3-540-55602-8}, + series = s-lncs, + volume = 607, + year = 1992, + acknowledgement={brucker, 2007-02-19}, + isbn = {978-3-540-55602-2} +} + +@Article{ ahrendt.ea:key:2005, + bibkey = {ahrendt.ea:key:2005}, + author = {Wolfgang Ahrendt and Thomas Baar and Bernhard Beckert and + Richard Bubel and Martin Giese and Reiner H\"ahnle and + Wolfram Menzel and Wojciech Mostowski and Andreas Roth and + Steffen Schlager and Peter H. Schmitt}, + title = {The {\KeY} Tool}, + doi = {10.1007/s10270-004-0058-x}, + publisher = pub-springer, + address = pub-springer:adr, + journal = j-sosym, + volume = 4, + number = 1, + year = 2005, + pages = {32--54}, + acknowledgement={brucker, 2007-04-23} +} + +@Article{ cengarle.ea:ocl:2004, + journal = j-sosym, + volume = 3, + pages = {9--30}, + number = 1, + year = 2004, + publisher = pub-springer, + address = pub-springer:adr, + issn = {1619-1366}, + doi = {10.1007/s10270-003-0035-9}, + title = {{\acs{ocl}} 1.4/5 vs. 2.0 Expressions Formal semantics and + expressiveness}, + author = {Mar{\`\i}a Victoria Cengarle and Alexander Knapp}, + acknowledgement={brucker, 2007-04-23}, + bibkey = {cengarle.ea:ocl:2004} +} + +@Article{ toval.ea:emerging:2003, + journal = j-sosym, + pages = {248--261}, + volume = 2, + number = 4, + year = 2003, + publisher = pub-springer, + doi = {10.1007/s10270-003-0031-0}, + address = pub-springer:adr, + issn = {1619-1366}, + month = dec, + title = {Emerging {\acs{ocl}} tools}, + author = {Jos{\'e} Ambrosio Toval and V{\`\i}ctor Requena and + Jos{\'e} Luis Fern{\'a}ndez}, + acknowledgement={brucker, 2007-04-23}, + bibkey = {toval.ea:emerging:2003} +} + +@Article{ bubel.ea:formal:2005, + author = {Richard Bubel and Reiner H\"{a}hnle}, + title = {Integration of informal and formal development of + object-oriented safety-critical software.}, + year = 2005, + journal = j-sttt, + publisher = pub-springer, + address = pub-springer:adr, + issn = {1433-2779}, + volume = 7, + number = 3, + language = {USenglish}, + doi = {10.1007/s10009-004-0166-5}, + pages = {197--211}, + acknowledgement={brucker, 2007-04-23}, + bibkey = {bubel.ea:formal:2005} +} + +@Proceedings{ stepney.ea:object:1992, + abstract = {This collection of papers draws together a variety of + approaches for adding OO concepts and structuring + capability to the Z formal specification language. Each + approach is used to specify the same two problems, to allow + a comparison. }, + editor = {Susan Stepney and Rosalind Barden and David Cooper}, + isbn = {3-540-19778-8}, + language = {USenglish}, + public = {yes}, + publisher = pub-springer, + address = pub-springer:adr, + series = {Workshops in Computing}, + topic = {formalism}, + title = {Object Orientation in {Z}}, + year = 1992, + keywords = {Object Orientation, Z}, + acknowledgement={brucker, 2007-04-23}, + bibkey = {stepney.ea:object:1992} +} + +@InProceedings{ hamie.ea:reflections:1998, + bibkey = {hamie.ea:reflections:1998}, + author = {Ali Hamie and Franco Civello and John Howse and Stuart + Kent and Richard Mitchell}, + title = {{Reflections on the Object Constraint Language}}, + year = 1998, + doi = {10.1007/b72309}, + topic = {formalism}, + acknowledgement={brucker, 2007-04-23}, + pages = {162--172}, + crossref = {bezivin.ea:unified:1999}, + abstract = {The \acf{ocl}, which forms part of the \acs{uml} set of + modelling notations, is a precise, textual language for + expressing constraints that cannot be shown + diagrammatically in \acs{uml}. This paper reflects on a + number of aspects of the syntax and semantics of the + \acs{ocl}, and makes proposals for clarification or + extension. Specifically, the paper suggests that: the + concept of flattening collections of collections is + unnecessary, state models should be connectable to class + models, defining object creation should be made more + convenient, \acs{ocl} should be based on a 2-valued logic, + set subtraction should be covered more fully, and a "let" + feature should be introduced. } +} + +@Proceedings{ bezivin.ea:unified:1999, + editor = {Jean B{\'e}zivin and Pierre-Alain Muller}, + doi = {10.1007/b72309}, + booktitle = {The Unified Modeling Language. \guillemotleft + \acs{uml}\guillemotright'98: Beyond the Notation}, + title = {The Unified Modeling Language. \guillemotleft + \acs{uml}\guillemotright'98: Beyond the Notation}, + publisher = pub-springer, + address = pub-springer:adr, + acknowledgement={brucker, 2007-04-23}, + series = s-lncs, + volume = 1618, + year = 1999, + isbn = {3-540-66252-9} +} + +@Book{ guttag.ea:larch:1993, + author = {John V. Guttag and James J. Horning}, + title = {{Larch}: Languages and Tools for Formal Specification}, + publisher = pub-springer-ny, + address = pub-springer-ny:adr, + series = {Texts and Monographs in Computer Science}, + year = 1993, + isbn = {0-387-94006-5}, + acknowledgement={brucker, 2007-04-23} +} + +@Article{ beckert.ea:refinement:2005, + title = {Refinement and Retrenchment for Programming Language Data + Types}, + author = {Bernhard Beckert and Steffen Schlager}, + journal = j-fac, + volume = 17, + number = 4, + acknowledgement={brucker, 2007-04-23}, + pages = {423--442}, + year = 2005, + doi = {10.1007/s00165-005-0073-x}, + publisher = pub-springer, + address = pub-springer:adr +} + +@Article{ nipkow:winskel:1998, + author = {Tobias Nipkow}, + title = {Winskel is (almost) Right: Towards a Mechanized Semantics + Textbook}, + publisher = pub-springer, + journal = j-fac, + volume = 10, + number = 2, + doi = {10.1007/s001650050009}, + pages = {171--186}, + abstract = {We present a formalization of the first 100 pages of + Winskel's textbook `The Formal Semantics of Programming + Languages' in the theorem prover Isabelle/\acs{hol}: 2 + operational, 2 denotational, 2 axiomatic semantics, a + verification condition generator, and the necessary + soundness, completeness and equivalence proofs, all for a + simple imperative programming language.}, + acknowledgement={brucker, 2007-04-23}, + year = 1998, + bibkey = {nipkow:winskel:1998} +} + +@InCollection{ dupuy.ea:using:2000, + author = {Sophie Dupuy and Ang{\`e}s Front-Conte and Christophe + Saint-Marcel}, + chapter = 6, + title = {Using \acs{uml} with a Behaviour-Driven Method}, + page = {97--112}, + acknowledgement={brucker, 2007-04-23}, + crossref = {frappier.ea:software:2000} +} + +@Book{ frappier.ea:software:2000, + editor = {Marc Frappier and Henri Habrias}, + title = {Software Specification Methods: An Overview Using a Case + Study}, + acknowledgement={brucker, 2007-04-23}, + publisher = pub-springer-london, + address = pub-springer-london:adr, + year = 2000, + isbn = {1-85233-353-7}, + series = {Formal Approaches to Computing and Information + Technology} +} + +@InProceedings{ hamie.ea:interpreting:1998, + bibkey = {hamie.ea:interpreting:1998}, + author = {Ali Hamie and John Howse and Stuart Kent}, + title = {Interpreting the {Object Constraint Language}}, + abstract = {The \acf{ocl}, which forms part of the \acs{uml} 1.1. set + of modelling notations is a precise, textual language for + expressing constraints that cannot be shown in the standard + diagrammatic notation used in \acs{uml}. A semantics for + \acs{ocl} lays the foundation for building CASE tools that + support integrity checking of the whole \acs{uml} models, + not just the component expressed using \acs{ocl}. This + paper provides a semantics for \acs{ocl}, at the same time + providing a semantics for classes, associations, attributes + and states. }, + pages = {288--295}, + ee = {http://csdl.computer.org/comp/proceedings/apsec/1998/9183/00/91830288abs.htm} + , + doi = {10.1109/apsec.1998.733731}, + keywords = {OCL}, + acknowledgement={brucker, 2007-04-23}, + topic = {formalism}, + crossref = {ieee:apsec:1998} +} + +@Proceedings{ ieee:apsec:1998, + bibkey = {ieee:apsec:1998}, + booktitle = PROC # { Asia Pacific Conference in Software + Engineering (\acs{apsec})}, + title = PROC # { Asia Pacific Conference in Software + Engineering (\acs{apsec})}, + publisher = pub-ieee, + address = pub-ieee:adr, + acknowledgement={brucker, 2007-04-23}, + year = 1998, + isbn = {0-8186-9183-2} +} + +@InProceedings{ mandel.ea:ocl:1999, + author = {Luis Mandel and Mar{\`i}a Victoria Cengarle}, + bibkey = {mandel.ea:ocl:1999}, + language = {USenglish}, + topic = {formalism}, + public = {yes}, + title = {On the expressive power of {\acs{ocl}}}, + acknowledgement={brucker, 2007-04-23}, + timestamp = 962971498, + abstract = {This paper examines the expressive power of \acs{ocl} in + terms of navigability and computability. First the + expressive power of \acs{ocl} is compared with the + relational calculus; it is showed that \acs{ocl} is not + equivalent to the relational calculus. Then an algorithm + computing the transitive closure of a binary relation + operation that cannot be encoded in the relational calculus + is expressed in \acs{ocl}. Finally the equivalence of + \acs{ocl} with a Turing machine is pondered.}, + pages = {854--874}, + crossref = {wing.ea:world:1999}, + ee = {http://link.springer.de/link/service/series/0558/bibs/1708/17080854.htm} + +} + +@Proceedings{ wing.ea:world:1999, + editor = {Jeannette M. Wing and Jim Woodcock and Jim Davies}, + booktitle = {World Congress on Formal Methods in the Development of + Computing Systems (FM)}, + title = {World Congress on Formal Methods in the Development of + Computing Systems (FM)}, + publisher = pub-springer, + address = pub-springer:adr, + acknowledgement={brucker, 2007-04-23}, + series = s-lncs, + volume = 1708, + year = 1999, + isbn = {3-540-66587-0} +} + +@Book{ spivey:z-notation:1992, + bibkey = {spivey:z-notation:1992}, + author = {J. M. Spivey}, + title = {The {Z} Notation: A Reference Manual}, + publisher = pub-prentice, + address = pub-prentice:adr, + edition = {2nd}, + length = 150, + year = 1992, + isbn = {0-139-78529-9}, + acknowledgement={brucker, 2007-04-23}, + abstract = {This is a revised edition of the first widely available + reference manual on Z originally published in 1989. The + book provides a complete and definitive guide to the use of + Z in specifying information systems, writing specifications + and designing implementations. \par Contents: Tutorial + introduction; Background; The Z language; The mathematical + tool-kit; Sequential systems; Syntax summary; Changes from + the first edition; Glossary.} +} + +@Book{ jones:vdm:1990, + bibkey = {jones:vdm:1990}, + author = {Cliff B.\ Jones}, + title = {Systematic Software Development Using \acs{vdm}}, + publisher = pub-prentice, + address = pub-prentice:adr, + year = 1990, + size = 333, + edition = {2nd}, + note = {0-13-880733-7}, + abstract = {This book deals with the Vienna Development Method. The + approach explains formal (functional) specifications and + verified design with an emphasis on the study of proofs in + the development process.}, + acknowledgement={brucker, 2007-04-23} +} + +@Article{ liskov.ea:behavioral:1994, + bibkey = {liskov.ea:behavioral:1994}, + abstract = {The use of hierarchy is an important component of + object-oriented design.Hierarchy allows the use of type + families, in whichhigher level supertypes capture the + behavior that all of their subtypes havein common. For this + methodology to be effective,it is necessary to have a clear + understanding of how subtypes and supertypesare related. + This paper takes the position thatthe relationship should + ensure that any property proved about supertypeobjects also + holds for its subtype objects. It presentstwo ways of + defining the subtype relation, each of which meets this + criterion,and each of which is easy for programmers touse. + The subtype relation is based on the specifications of the + sub- and supertypes; the paper presents a way of + specifyingtypes that makes it convenient to define the + subtype relation. The paper alsodiscusses the ramifications + of this notion ofsubtyping on the design of type + families.}, + author = {Barbara H. Liskov and Jeannette M. Wing}, + journal = j-toplas, + month = nov, + pages = {1811--1841}, + issn = {0164-0925}, + keywords = {languages, verficiation}, + language = {USenglish}, + number = 6, + publisher = pub-acm, + address = pub-acm:adr, + doi = {10.1145/197320.197383}, + public = {yes}, + title = {A behavioral notion of subtyping}, + volume = 16, + year = 1994, + acknowledgement={brucker, 2007-04-23} +} + +@Book{ winskel:semantics:1993, + bibkey = {winskel:semantics:1993}, + author = {Glynn Winskel}, + title = {The Formal Semantics of Programming Languages}, + publisher = pub-mit, + address = pub-mit:adr, + isbn = {0-262-23169-7}, + pages = 384, + year = 1993, + acknowledgement={brucker, 2007-04-23} +} + +@Book{ andrews:introduction:2002, + author = {Peter B. Andrews}, + title = {Introduction to Mathematical Logic and Type Theory: To + Truth through Proof}, + year = 2002, + isbn = {1-402-00763-9}, + edition = {2nd}, + publisher = pub-kluwer, + address = pub-kluwer:adr, + acknowledgement={brucker, 2007-04-23}, + bibkey = {andrews:introduction:2002} +} + +@PhDThesis{ santen:mechanized:1999, + author = {Thomas Santen}, + title = {A Mechanized Logical Model of {Z} and Object-Oriented + Specification}, + school = {Technical University Berlin}, + year = 1999, + month = jun, + annote = {Also available as book: Shaker Verlag, Aachen. ISBN: + 3826576500}, + bibkey = {santen:mechanized:1999}, + acknowledgement={brucker, 2007-04-23} +} + +@Book{ kleene:mathematics:1971, + bibkey = {kleene:mathematics:1971}, + author = {Stephen C. Kleene}, + title = {Introduction to Meta Mathematics}, + publisher = {Wolters-Noord\-hoff Publishing}, + address = {Amsterdam}, + isbn = {0-7204-2103-9}, + year = 1971, + note = {Originally published by Van Nostrand, 1952}, + acknowledgement={brucker, 2007-04-23} +} + +@Book{ gordon.ea:hol:1993, + bibkey = {gordon.ea:hol:1993}, + author = {Mike J. C. Gordon and Tom F. Melham}, + title = {Introduction to \acs{hol}: a theorem proving environment + for higher order logic}, + publisher = pub-cup, + address = pub-cup:adr, + year = 1993, + pages = 472, + isbn = {0-521-44189-7}, + month = jul, + abstract = {Currently being applied to a wide variety of problems, + Higher-Order Logic (\acs{hol}) is a proof development + system intended for applications to both hardware and + software. This self-contained description contains a + tutorial introduction and most of the material needed for + day-to-day work.}, + acknowledgement={brucker, 2007-04-23} +} + +@PhDThesis{ richters:precise:2002, + author = {Mark Richters}, + title = {A Precise Approach to Validating {\acs{uml}} Models and + {\acs{ocl}} Constraints}, + school = {Universit{\"a}t Bremen}, + year = 2002, + address = {Logos Verlag, Berlin, \acs{biss} Monographs, No. 14}, + isbn = {3-89722-842-4}, + abstract = {We present a precise approach that allows an analysis and + validation of \acs{uml} models and OCL constraints. We + focus on models and constraints specified in the analysis + and early design stage of a software development process. + For this purpose, a suitable subset of \acs{uml} + corresponding to information that is usually represented in + class diagrams is identified and formally defined. This + basic modeling language provides a context for all OCL + constraints. We define a formal syntax and semantics of OCL + types, operations, expressions, invariants, and + pre-/postconditions. We also give solutions for problems + with the current OCL definition and discuss possible + extensions. A metamodel for OCL is introduced that defines + the abstract syntax of OCL expressions and the structure of + types and values. The metamodel approach allows a seamless + integration with the \acs{uml} metamodeling architecture + and makes the benefits of a precise OCL definition easier + accessible. The OCL metamodel also allows to define + context-sensitive conditions for well-formed OCL + expressions more precisely. These conditions can now be + specified with OCL whereas they previously were specified + only informally. In order to demonstrate the practical + applicability of our work, we have realized substantial + parts of it in a tool supporting the validation of models + and constraints. Design specifications can be ``executed'' + and animated thus providing early feedback in an iterative + development process. Our approach offers novel ways for + checking user data against specifications, for automating + test procedures, and for checking CASE tools for standards + conformance. Therefore, this work contributes to the goal + of improving the overall quality of software systems by + combining theoretical and practical techniques.}, + acknowledgement={brucker, 2007-04-23} +} + +@Booklet{ cc:cc-part3:2006, + bibkey = {cc:cc-part3:2006}, + key = {Common Criteria}, + institution = {Common Criteria}, + language = {USenglish}, + month = sep, + year = 2006, + public = {yes}, + title = {Common Criteria for Information Technology Security + Evaluation (Version 3.1), {Part} 3: Security assurance + components}, + note = {Available as document + \href{http://www.commoncriteriaportal.org/public/files/CCPART3V3.1R1.pdf} + {CCMB-2006-09-003}}, + number = {CCMB-2006-09-003}, + acknowledgement={brucker, 2007-04-24} +} + +@Booklet{ omg:ocl:1997, + bibkey = {omg:ocl:1997}, + key = omg, + abstract = {This document introduces and defines the Object Constraint + Language (\acs{ocl}), a formal language to express side + effect-free constraints. Users of the Unified Modeling + Language and other languages can use \acs{ocl} to specify + constraints and other expressions attached to their models. + \acs{ocl} was used in the \acs{uml} Semantics document to + specify the well-formedness rules of the \acs{uml} + metamodel. Each well-formedness rule in the static + semantics sections in the \acs{uml} Semantics document + contains an \acs{ocl} expression, which is an invariant for + the involved class. The grammar for \acs{ocl} is specified + at the end of this document. A parser generated from this + grammar has correctly parsed all the constraints in the + \acs{uml} Semantics document, a process which improved the + correctness of the specifications for \acs{ocl} and \acs{uml}.}, + institution = omg, + language = {USenglish}, + month = sep, + note = {Available as \acs{omg} document + \href{http://www.omg.org/cgi-bin/doc?ad/97-08-08} + {ad/97-08-08}}, + keywords = {\acs{uml}, OCL}, + topic = {formalism}, + public = {yes}, + title = {Object Constraint Language Specification (Version 1.1)}, + year = 1997, + acknowledgement={brucker, 2007-04-23} +} + +@Booklet{ omg:xmi:2000, + bibkey = {omg:xmi:2000}, + key = omg, + abstract = {The main purpose of XMI is to enable easy interchange of + metadata between modeling tools (based on the + \acs{omg}-\acs{uml}) and metadata repositories + (\acs{omg}-MOF based) in distributed heterogeneous + environments. XMI integrates three key industry standards: + XML, \acs{uml}, MOF.}, + publisher = omg, + language = {USenglish}, + month = nov, + year = 2000, + keywords = {\acs{uml}, XML, XMI}, + topic = {formalism}, + public = {yes}, + title = {\acs{omg} \acs{xml} Metadata Interchange (\acs{xmi}) + Specification (Version 1.1)}, + note = {Available as \acs{omg} document + \href{http://www.omg.org/cgi-bin/doc?formal/00-11-02} + {formal/00-11-02}}, + acknowledgement={brucker, 2007-04-23} +} + +@Booklet{ omg:ocl:2003, + bibkey = {omg:ocl:2003}, + key = omg, + abstract = {This document introduces and defines the Object Constraint + Language (OCL), a formal language to express side + effect-free constraints. Users of the Unified Modeling + Language and other languages can use OCL to specify + constraints and other expressions attached to their models. + OCL was used in the \acs{uml} Semantics document to specify + the well-formedness rules of the \acs{uml} metamodel. Each + well-formedness rule in the static semantics sections in + the \acs{uml} Semantics document contains an OCL + expression, which is an invariant for the involved class. + The grammar for OCL is specified at the end of this + document. A parser generated from this grammar has + correctly parsed all the constraints in the \acs{uml} + Semantics document, a process which improved the + correctness of the specifications for OCL and \acs{uml}.}, + publisher = omg, + language = {USenglish}, + month = oct, + keywords = {\acs{uml}, OCL}, + topic = {formalism}, + public = {yes}, + note = {Available as \acs{omg} document + \href{http://www.omg.org/cgi-bin/doc?ptc/03-10-14} + {ptc/03-10-14}}, + title = {\acs{uml} 2.0 \acs{ocl} Specification}, + year = 2003, + acknowledgement={brucker, 2007-04-23} +} + +@Booklet{ omg:uml:2003, + bibkey = {omg:uml:2003}, + key = omg, + abstract = {The Unified Modeling Language (\acs{uml}) provides system + architects working on object analysis and design with one + consistent language for specifying, visualizing, + constructing, and documenting the artifacts of software + systems, as well as for business modeling.This + specification represents the convergence of best practices + in the object-technology industry. \acs{uml} is the proper + successor to the object modeling languages of three + previouslyleading object-oriented methods (Booch, OMT, and + OOSE). The \acs{uml} is the union of thesemodeling + languages and more, since it includes additional + expressiveness to handle modelingproblems that these + methods did not fully address.One of the primary goals of + \acs{uml} is to advance the state of the industry by + enabling objectvisual modeling tool interoperability. + However, in order to enable meaningful exchange ofmodel + information between tools, agreement on semantics and + notation is required. \acs{uml} meets the following + requirements: \begin{enumerate} \item Formal definition of + a common object analysis and design (OA\&D) metamodel to + representthe semantics of OA\&D models, which include + static models, behavioral models, usagemodels, and + architectural models. \item IDL specifications for + mechanisms for model interchange between OA\&D tools. + Thisdocument includes a set of IDL interfaces that support + dynamic construction and traversal ofa user model. \item + readable notation for representing OA\&D models. + \end{enumerate} This document defines the \acs{uml} + notation, an elegant graphic syntax for consistently + expressing the \acs{uml}'s richsemantics. Notation is an + essential part of OA\&D modeling and the \acs{uml}.}, + publisher = omg, + language = {USenglish}, + month = mar, + year = 2003, + note = {Available as \acs{omg} document + \href{http://www.omg.org/cgi-bin/doc?formal/03-03-01} + {formal/03-03-01}}, + keywords = {\acs{uml}, OCL}, + topic = {formalism}, + public = {yes}, + title = {Unified Modeling Language Specification (Version 1.5)}, + acknowledgement={brucker, 2007-04-23} +} + +@Booklet{ omg:ocl:2006, + bibkey = {omg:ocl:2006}, + key = omg, + abstract = {This document introduces and defines the Object Constraint + Language (OCL), a formal language to express side + effect-free constraints. Users of the Unified Modeling + Language and other languages can use OCL to specify + constraints and other expressions attached to their models. + OCL was used in the \acs{uml} Semantics document to specify + the well-formedness rules of the \acs{uml} metamodel. Each + well-formedness rule in the static semantics sections in + the \acs{uml} Semantics document contains an OCL + expression, which is an invariant for the involved class. + The grammar for OCL is specified at the end of this + document. A parser generated from this grammar has + correctly parsed all the constraints in the \acs{uml} + Semantics document, a process which improved the + correctness of the specifications for OCL and \acs{uml}.}, + publisher = omg, + language = {USenglish}, + month = apr, + keywords = {\acs{uml}, OCL}, + topic = {formalism}, + note = {Available as \acs{omg} document + \href{http://www.omg.org/cgi-bin/doc?formal/06-05-01} + {formal/06-05-01}}, + public = {yes}, + title = {\acs{uml} 2.0 \acs{ocl} Specification}, + year = 2006, + acknowledgement={brucker, 2007-04-23} +} + +@Booklet{ omg:uml:2005, + bibkey = {omg:uml:2005}, + key = omg, + publisher = omg, + language = {USenglish}, + note = {Available as \acs{omg} document + \href{http://www.omg.org/cgi-bin/doc?formal/05-07-04} + {formal/05-07-04}}, + keywords = {\acs{uml}}, + topic = {formalism}, + public = {yes}, + title = {\acs{uml} 2.0 Superstructure Specification}, + year = 2005, + month = jul, + acknowledgement={brucker, 2007-04-23} +} + +@PhDThesis{ oheimb:analyzing:2001, + author = {David von Oheimb}, + title = {Analyzing {J}ava in {Isabelle/\acs{hol}}: Formalization, + Type Safety and {H}oare Logic}, + school = {Technische Universit\"{a}t M\"{u}nchen}, + year = 2001, + crclassification={D.2.4, D.3.1, F.3.1}, + crgenterms = {Languages, Verification, Theory}, + keywords = {Java, formalization, operational semantics, type + soundness, axiomatic semantics, Isabelle/HOL}, + abstract = {This thesis deals with machine-checking a large + sublanguage of sequential Java, covering nearly all + features, in particular the object-oriented ones. It shows + that embedding such a language in a theorem prover and + deducing practically important properties is meanwhile + possible and explains in detail how this can be achieved. + We formalize the abstract syntax, and the static semantics + including the type system and well-formedness conditions, + as well as an operational (evaluation) semantics of the + language. Based on these definitions, we can express + soundness of the type system, an important design goal + claimed to be reached by the designers of Java, and prove + that type safety holds indeed. Moreover, we give an + axiomatic semantics of partial correctness for both + statements and (side-effecting) expressions. We prove the + soundness of this semantics relative to the operational + semantics, and even prove completeness. We further give a + small but instructive application example. A direct outcome + of this work is the confirmation that the design and + specification of Java (or at least the subset considered) + is reasonable, yet some omissions in the language + specification and possibilities for generalizing the design + can be pointed out. The second main contribution is a sound + and complete Hoare logic, where the soundness proof for our + Hoare logic gives new insights into the role of type + safety. To our knowledge, this logic is the first one for + an object-oriented language that has been proved complete. + By-products of this work are a new general technique for + handling side-effecting expressions and their results, the + discovery of the strongest possible rule of consequence, + and a new rule for flexible handling of mutual recursion. + All definitions and proofs have been done fully formally + with the interactive theorem prover Isabelle/HOL, + representing one of its major applications. This approach + guarantees not only rigorous definitions, but also gives + maximal confidence in the results obtained. Thus this + thesis demonstrates that machine-checking the design of an + important non-trivial programming language and conducting + meta-theory on it entirely within a theorem proving system + has become a reality. }, + acknowledgement={brucker, 2007-04-23}, + bibkey = {oheimb:analyzing:2001} +} + +@Article{ chiarada.ea:improving:2006, + bibkey = {chiarada.ea:improving:2006}, + language = {USenglish}, + public = {yes}, + title = {Improving the {\acs{ocl}} Semantics Definition by Applying + Dynamic Meta Modeling and Design Patterns}, + author = {Juan Mart{\'\i}n Chiarad{\'\i}a and Claudia Pons}, + editor = {Birgith Demuth and Dan Chiorean and Martin Gogolla and Jos + Warmer}, + issn = {1863-2122}, + volume = 5, + year = 2006, + acknowledgement={brucker, 2007-04-23}, + journal = j-eceasst +} + +@PhDThesis{ schirmer:verification:2006, + author = {Norbert Schirmer}, + title = {Verification of Sequential Imperative Programs in + {I}sabelle/{\acs{hol}}}, + school = {Technische Universit\"at M\"unchen}, + year = 2006, + acknowledgement={brucker, 2007-04-23}, + abstract = {The purpose of this thesis is to create a verification + environment for sequential imperative programs. First a + general language model is proposed, which is independent of + a concrete programming language but expressive enough to + cover all common language features: mutually recursive + procedures, abrupt termination and exceptions, runtime + faults, local and global variables, pointers and heap, + expressions with side effects, pointers to procedures, + partial application and closures, dynamic method invocation + and also unbounded nondeterminism. + + For this language a Hoare logic for both partial and total + correctness is developed and on top of it a verification + condition generator is implemented. The Hoare logic is + designed to allow the integration of program analysis or + software model checking into the verification. + + To demonstrate the continuity to a real programming + language a subset of C is embedded into the verification + environment. + + The whole work is developed in the theorem prover Isabelle. + Therefore the correctness is machine-checked and in + addition the rich infrastructure of the general purpose + theorem prover Isabelle can be employed for the + verification of imperative programs. + + } +} + +@Article{ harel.ea:meaningful:2004, + author = {David Harel and Bernhard Rumpe}, + title = {Meaningful Modeling: What's the Semantics of + ``Semantics''?}, + journal = {\acs{ieee} Computer}, + year = 2004, + pages = {64--72}, + volume = 37, + issn = {0018-9162}, + number = 10, + month = oct, + publisher = pub-ieee, + address = pub-ieee:adr, + doi = {10.1109/MC.2004.172}, + acknowledgement={brucker, 2007-04-23} +} + +@Book{ hahnle:automated:1994, + author = {Reiner H{\"a}hnle}, + title = {Automated Deduction in Multiple-valued Logics}, + publisher = pub-oxford, + address = pub-oxford:adr, + disvolume = 10, + disseries = {International Series of Monographs on Computer Science}, + year = 1994, + acknowledgement={brucker, 2007-04-23}, + isbn = {0-19-853989-4}, + bibkey = {hahnle:automated:1994} +} + +@Book{ vigano:labelled:2000, + author = {Luca Vigan{\`o}}, + title = {Labelled Non-Classical Logics}, + year = 2000, + language = {USenglish}, + publisher = pub-kluwer, + address = pub-kluwer:adr, + isbn = {0-7923-7749-4}, + cover = {2000/lncl.png}, + abstract = {The subject of the book is the development and + investigation of a framework for the modular and uniform + presentation and implementation of non-classical logics, in + particular modal and relevance logics. Logics are presented + as labelled deduction systems, which are proved to be sound + and complete with respect to the corresponding Kripke-style + semantics. We investigate the proof theory of our systems, + and show them to possess structural properties such as + normalization and the subformula property, which we exploit + not only to establish advantages and limitations of our + approach with respect to related ones, but also to give, by + means of a substructural analysis, a new proof-theoretic + method for investigating decidability and complexity of + (some of) the logics we consider. All of our deduction + systems have been implemented in the generic theorem prover + Isabelle, thus providing a simple and natural environment + for interactive proof development.}, + acknowledgement={brucker, 2007-04-23}, + bibkey = {vigano:labelled:2000} +} + +@Book{ gabbay:labelled:1997, + author = {Dov M. Gabbay}, + title = {Labelled Deductive Systems}, + publisher = pub-oxford, + address = pub-oxford:adr, + series = {Oxford Logic Guides}, + year = 1997, + isbn = {978-0-198-53833-2}, + volume = 1, + acknowledgement={brucker, 2007-04-23}, + bibkey = {gabbay:labelled:1997} +} + +@Book{ warmer.ea:ocl2:2003, + bibkey = {warmer.ea:ocl2:2003}, + author = {Jos Warmer and Anneke Kleppe}, + abstract = {This book covers \acs{ocl} 2.0}, + keywords = {OCL, \acs{uml}}, + isbn = {0-321-17936-6}, + edition = {2nd}, + language = {USenglish}, + public = {yes}, + topic = {formalism}, + publisher = pub-awl, + address = pub-awl:adr, + title = {The Object Constraint Language: Getting Your Models Ready + for \acs{mda}}, + year = 2003, + month = aug, + num_pages = 240, + price = {39.99}, + cover = {2003/ocl2.png}, + currency = {USD}, + acknowledgement={brucker, 2007-04-23} +} + +@Book{ smith:object:2000, + author = {Graeme Smith}, + title = {The Object {Z} Specification Language}, + publisher = pub-kluwer, + address = pub-kluwer:adr, + year = 2000, + isbn = {0-7923-8684-1}, + pages = 160, + abstract = {bject-Z is an object-oriented extension of the formal + specification language Z. It adds, to Z, notions of classes + and objects, and inheritance and polymorphism. By extending + Z's semantic basis, it enables the specification of systems + as collections of independent objects in which self and + mutual referencing are possible. + + The Object-Z Specification Language presents a + comprehensive description of Object-Z including discussions + of semantic issues, definitions of all language constructs, + type rules and other rules of usage, specification + guidelines, and a full concrete syntax. It will enable you + to confidently construct Object-Z specifications and is + intended as a reference manual to keep by your side as you + use and learn to use Object-Z. + + The Object-Z Specification Language is suitable as a + textbook or as a secondary text for a graduate level + course, and as a reference for researchers and + practitioners in industry.}, + series = {Advances in Formal Methods Series}, + acknowledgement={brucker, 2007-04-23} +} + +@Book{ meyer:object-oriented:1988, + author = {Bertrand Meyer}, + title = {Object-Oriented Software Construction}, + acknowledgement={brucker, 2007-04-23}, + publisher = pub-prentice, + address = pub-prentice:adr, + year = 1988, + isbn = {0-13-629031-0}, + descriptor = {Eiffel, Objekt-orientiert, Software} +} + +@Article{ meyer.ea:interactive:1999, + title = {Interactive Verification Environments for Object-Oriented + Languages }, + author = {J{\"o}rg Meyer and Arnd Poetzsch-Heffter }, + journal = j-ucs, + volume = 5, + url = {http://www.jucs.org/jucs_5_3/interactive_verification_environments_for} + , + number = 3, + pages = {208--225 }, + year = 1999, + doi = {10.1007/3-540-46419-0_6}, + acknowledgement={brucker, 2007-04-23}, + abstract = {Formal specification and verification techniques can + improve the quality of object-oriented software by enabling + semantic checks and certification of properties. To be + applicable to object-oriented programs, they have to cope + with subtyping, aliasing via object references, as well as + abstract and recursive methods. For mastering the resulting + complexity, mechanical aid is needed. The article outlines + the specific technical requirements for the specification + and verification of object-oriented programs. Based on + these requirements, it argues that verification of + OO-programs should be done interactively and develops an + modular architecture for this task. In particular, it shows + how to integrate interactive program verification with + existing universal interactive theorem provers, and + explains the new developed parts of the architecture. To + underline the general approach, we describe interesting + features of our prototype implementation.} +} + +@Article{ church:types:1940, + author = {Church, Alonzo}, + title = {A formulation of the simple theory of types}, + journal = j-sl, + year = 1940, + volume = 5, + number = 2, + month = jun, + pages = {56--68}, + acknowledgement={brucker, 2007-04-23}, + bibkey = {church:types:1940} +} + +@Article{ muller.ea:holcf:1999, + author = {Olaf M\"uller and Tobias Nipkow and David von Oheimb and + Oskar Slotosch}, + title = {\acs{holcf} = \acs{hol} + \acs{lcf}}, + journal = j-fp, + number = 2, + doi = {10.1017/S095679689900341X}, + volume = 9, + pages = {191--223}, + year = 1999, + abstract = {HOLCF is the definitional extension of Church's + Higher-Order Logic with Scott's Logic for Computable + Functions that has been implemented in the theorem prover + Isabelle. This results in a flexible setup for reasoning + about functional programs. HOLCF supports standard domain + theory (in particular fixedpoint reasoning and recursive + domain equations) but also coinductive arguments about lazy + datatypes. This paper describes in detail how domain theory + is embedded in HOL and presents applications from + functional programming, concurrency and denotational + semantics. }, + acknowledgement={brucker, 2007-04-23}, + bibkey = {muller.ea:holcf:1999} +} + +@Article{ huet:programtransformations:1978, + author = {G{\'e}rard Huet and Bernard Lang}, + title = {Proving and Applying Program Transformations Expressed + with Second Order Patterns}, + journal = {Acta Informatica}, + volume = 11, + year = 1978, + pages = {31--55}, + number = 1, + doi = {10.1007/BF00264598}, + acknowledgement={brucker, 2007-04-23}, + bibkey = {huet:programtransformations:1978} +} + +@PhDThesis{ kyas:verifying:2006, + author = {Marcel Kyas}, + title = {Verifying {\acs{ocl}} Specifications of {\acs{uml}} + Models: Tool Support and Compositionality}, + school = {University of Leiden}, + year = 2006, + acknowledgement={brucker, 2007-04-23}, + abstract = {The Unified Modelling Language (\acs{uml}) and the Object + Constraint Language (OCL) serve as specification languages + for embedded and real-time systems used in a + safety-critical environment. In this dissertation class + diagrams, object diagrams, and OCL constraints are + formalised. The formalisation serves as foundation for a + translation of class diagrams, state machines, and + constraints into the theorem prover PVS. This enables the + formal verification of models defined in a subset of + \acs{uml} using the interactive theorem prover. The type + system of OCL makes writing specifications difficult while + the model is still under development. To overcome this + difficulty a new type system is proposed, based on + intersection types, union types, and bounded operator + abstraction. To reduce the complexity of the model and to + increase the structure of the specification, compositional + reasoning is used. The introduction of history variables + allows compositional specifications. Proof rules support + compositional reasoning. The feasibility of the presented + approach is demonstrated by two case-studies. The first one + is the "Sieve of Eratosthenes" and the second one is a part + of the medium altitude reconnaissance system (MARS) + deployed in F-16 fighters of the Royal Dutch Air Force.}, + isbn = {3-86541-142-8}, + publisher = {Lehmanns Media}, + address = {Berlin}, + file = {papers/2006/kyas-verifying-2006.tgz} +} + +@Article{ bertino.ea:object-oriented:1992, + author = {Elisa Bertino and Mauro Negri and Giuseppe Pelagatti and + Licia Sbattella}, + title = {Object-Oriented Query Languages: The Notion and the + Issues}, + journal = j-tkde, + volume = 4, + number = 3, + doi = {10.1109/69.142014}, + library = {DINF-K}, + year = 1992, + pages = {223--237}, + abstract = {The authors describe how the characteristics of an + object-oriented data model, such as object identity, + complex object structure, methods, and class hierarchies, + have an impact on the design of a query language. They also + point out major differences with respect to relational + query languages. The discussion is supported through the + definition of OOPC, a formal object-oriented query language + based on predicate calculus, which incorporates in a + consistent formal notation most features of existing + object-oriented query languages.}, + acknowledgement={brucker, 2007-04-23}, + bibkey = {bertino.ea:object-oriented:1992} +} + +@Article{ beckert.ea:leant-ap:1995, + author = {Bernhard Beckert and Joachim Posegga}, + title = {{\leanTAP}: Lean Tableau-based Deduction}, + journal = j-ar, + volume = 15, + number = 3, + pages = {339--358}, + year = 1995, + publisher = pub-springer, + address = pub-springer:adr, + doi = {10.1007/BF00881804}, + acknowledgement={brucker, 2007-04-23}, + bibkey = {beckert.ea:leant-ap:1995} +} + +@Article{ jackson:alloy:2002, + author = {Daniel Jackson}, + title = {{Alloy}: a lightweight object modelling notation}, + journal = j-tosem, + volume = 11, + number = 2, + year = 2002, + issn = {1049-331X}, + pages = {256--290}, + doi = {10.1145/505145.505149}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={brucker, 2007-04-23}, + abstract = {Alloy is a little language for describing structural + properties. It offers a declaration syntax compatible with + graphical object models, and a set-based formula syntax + powerful enough to express complex constraints and yet + amenable to a fully automatic semantic analysis. Its + meaning is given by translation to an even smaller + (formally defined) kernel. This paper presents the language + in its entirety, and explains its motivation, contributions + and deficiencies. } +} + +@Article{ kobryn:uml:1999, + author = {Cris Kobryn}, + title = {{\acs{uml}} 2001: a standardization odyssey}, + journal = j-cacm, + volume = 42, + number = 10, + year = 1999, + issn = {0001-0782}, + pages = {29--37}, + doi = {10.1145/317665.317673}, + publisher = pub-acm, + address = pub-acm:adr, + language = {USEnglish}, + acknowledgement={brucker, 2007-04-23} +} + +@Article{ basin.ea:natural:1998, + author = {David A. Basin and Se{\'a}n Matthews and Luca Vigan{\`o}}, + title = {Natural Deduction for Non-Classical Logics}, + journal = {Studia Logica}, + doi = {10.1023/A:1005003904639}, + year = 1998, + volume = 60, + number = 1, + publisher = pub-springer, + address = pub-acm:adr, + issn = {0039-3215}, + acknowledgement={brucker, 2007-04-23}, + pages = {119--160}, + language = {USenglish}, + note = {Special issue on \emph{Natural Deduction} edited by Frank + Pfenning and Wilfried Sieg}, + abstract = {We present a framework for machine implementation of + families of non-classical logics with Kripke-style + semantics. We decompose a logic into two interacting parts, + each a natural deduction system: a base logic of labelled + formulae, and a theory of labels characterizing the + properties of the Kripke models. By appropriate + combinations we capture both partial and complete fragments + of large families of non-classical logics such as modal, + relevance, and intuitionistic logics. Our approach is + modular and supports uniform proofs of correctness and + proof normalization. We have implemented our work in the + Isabelle Logical Framework. } +} + +@InProceedings{ nipkow.ea:java-light:1998, + author = {Tobias Nipkow and David von Oheimb}, + title = {{Java$_{{\ell}ight}$} is Type-Safe---Definitely}, + booktitle = {\acs{acm} Symp.\ Principles of Programming Languages + (\acs{popl})}, + publisher = pub-acm, + isbn = {0-89791-979-3}, + address = pub-acm:adr, + year = 1998, + pages = {161--170}, + doi = {10.1145/268946.268960}, + location = {San Diego, California, United States}, + acknowledgement={brucker, 2007-04-23}, + bibkey = {nipkow.ea:java-light:1998} +} + +@Article{ bierman.ea:mj:2003, + author = {Gavin M. Bierman and Matthew J. Parkinson}, + title = {Effects and effect inference for a core {Java} calculus}, + journal = j-entcs, + volume = 82, + number = 7, + year = 2003, + doi = {10.1016/S1571-0661(04)80803-X}, + pages = {1--26}, + booktitle = {WOOD2003, Workshop on Object Oriented Developments + (Satellite Event of ETAPS 2003)}, + acknowledgement={brucker, 2007-04-23}, + bibkey = {bierman.ea:mj:2003}, + publisher = pub-elsevier, + address = pub-elsevier:adr +} + +@Article{ chiorean.ea:ensuring:2004, + author = {Dan Chiorean and Mihai Pasca and Adrian C{\^a}rcu and + Cristian Botiza and Sorin Moldovan}, + title = {Ensuring \acs{uml} Models Consistency Using the \acs{ocl} + Environment.}, + journal = j-entcs, + volume = 102, + booktitle = PROC # { the Workshop, \acs{ocl} 2.0 -- Industry + Standard or Scientific Playground?}, + year = 2004, + acknowledgement={brucker, 2007-04-24}, + pages = {99--110}, + doi = {10.1016/j.entcs.2003.09.005}, + publisher = pub-elsevier, + address = pub-elsevier:adr +} + +@Article{ rauch.ea:formalizing:2003, + abstract = {We present a formal model of the Java two's-complement + integral arithmetics. The model directly formalizes the + arithmetic operations as given in the Java Language + Specification (JLS). The algebraic properties of these + definitions are derived. Underspecifications and + ambiguities in the JLS are pointed out and clarified. The + theory is formally analyzed in Isabelle/HOL, that is, + machine-checked proofs for the ring properties and + divisor/remainder theorems etc. are provided. This work is + suited to build the framework for machine-supported + reasoning over arithmetic formulae in the context of Java + source-code verification.}, + author = {Nicole Rauch and Burkhart Wolff}, + journal = j-entcs, + doi = {10.1016/S1571-0661(04)80808-9}, + acknowledgement={brucker, 2007-04-24}, + publisher = pub-elsevier, + address = pub-elsevier:adr, + title = {Formalizing {Java}'s Two's-Com\-ple\-ment Integral Type in + {Isabelle}/\acs{hol}}, + volume = 80, + year = 2003, + pages = {1--18}, + booktitle = {International Workshop on Formal Methods for Industrial + Critical Systems (\ac{fmics})} +} + +@Article{ kyas.ea:formalizing:2004, + journal = j-entcs, + author = {Kyas, Marcel and Fecher, Harald and de Boer, Frank S. and + van der Zwaag, Mark and Hooman, Jozef and Arons, Tamarah + and Kugler, Hillel}, + title = {Formalizing {\acs{uml}} Models and {\acs{ocl}} Constraints + in {\acs{pvs}}}, + booktitle = {Workshop on Semantic Foundations of Engineering Design + Languages (\acs{sfedl})}, + year = 2004, + doi = {10.1016/j.entcs.2004.09.027 }, + pages = {39--47}, + acknowledgement={brucker, 2007-04-24}, + publisher = pub-elsevier, + address = pub-elsevier:adr +} + +@Proceedings{ grabowski.ea:formal:2005, + editor = {Jens Grabowski and Brian Nielsen}, + title = {Formal Approaches to Software Testing (\textsc{fates})}, + booktitle = {Formal Approaches to Software Testing (\textsc{fates})}, + series = s-lncs, + volume = 3395, + year = 2005, + isbn = {3-540-25109-X}, + doi = {10.1007/b106767}, + acknowledgement={brucker, 2007-04-24}, + publisher = pub-springer, + address = pub-springer:adr +} + +@InCollection{ kerber.ea:tableau:1996, + author = {Manfred Kerber and Michael Kohlhase}, + title = {A Tableau Calculus for Partial Functions}, + pages = {21--49}, + abstract = {Even though it is not very often admitted, partial + functions do play a significant role in many practical + applications of deduction systems. Kleene has already given + a semantic account of partial functions using a + three-valued logic decades ago, but there has not been a + satisfactory mechanization. Recent years have seen a + thorough investigation of the framework of many-valued + truth-functional logics. However, strong Kleene logic, + where quantification is restricted and therefore not + truth-functional, does not fit the framework directly. We + solve this problem by applying recent methods from sorted + logics. This paper presents a tableau calculus that + combines the proper treatment of partial functions with the + efficiency of sorted calculi.}, + acknowledgement={brucker, 2007-04-24}, + bibkey = {kerber.ea:tableau:1996}, + booktitle = {Collegium Logicum---Annals of the Kurt-G{\"o}del-Society}, + volume = 2, + publisher = pub-springer-ny, + address = pub-springer-ny:adr, + isbn = {3-211-82796-X}, + year = 1996 +} + +@InCollection{ paulson:generic:1996, + author = {Lawrence C. Paulson}, + title = {Generic automatic proof tools}, + pages = {23--47}, + abstract = {This paper explores a synthesis between two distinct + traditions in automated reasoning: resolution and + interaction. In particular it discusses Isabelle, an + interactive theorem prover based upon a form of resolution. + It aims to demonstrate the value of proof tools that, + compared with traditional resolution systems, seem absurdly + limited. Isabelle's classical reasoner searches for proofs + using a tableau approach. The reasoner is generic: it + accepts rules proved in applied theories, involving defined + connectives. New constants are not reduced to first-order + logic; the reasoner}, + acknowledgement={brucker, 2007-04-24}, + bibkey = {paulson:generic:1996}, + booktitle = {Automated reasoning and its applications: essays in honor + of {Larry Wos}}, + year = 1997, + editor = {Robert Veroff}, + publisher = pub-mit, + address = pub-mit:adr, + isbn = {978-0-262-22055-2} +} + +@InCollection{ nipkow:order-sorted:1993, + author = {Tobias Nipkow}, + title = {Order-Sorted Polymorphism in {Isabelle}}, + booktitle = {Workshop on Logical Environments}, + editor = {G\'erard Huet and Gordon Plotkin}, + publisher = pub-cup, + address = pub-cup:adr, + year = 1993, + location = {Edinburgh, Scotland}, + pages = {164--188}, + acknowledgement={brucker, 2007-04-24}, + isbn = {0-521-43312-6}, + bibkey = {nipkow:order-sorted:1993} +} + +@InCollection{ hahnle:tableaux:1999, + author = {Reiner H\"ahnle}, + booktitle = {Handbook of Tableau Methods}, + editor = {Marcello D'Agostino and Dov Gabbay and Reiner H\"ahnle and + Joachim Posegga}, + isbn = {978-0-792-35627-1}, + publisher = pub-kluwer, + address = pub-kluwer:adr, + title = {Tableaux for Many-Valued Logics}, + pages = {529--580}, + year = 1999, + public = {no}, + mynote = {Postscript-File nicht weitergeben!}, + abstract = {This article reports on research done in the intersection + between many-valued logics and logical calculi related to + tableaux. A lot of important issues in many-valued logic, + such as algebras arising from many-valued logic, + many-valued function minimization, philosophical topics, or + applications are not discussed here; for these, we refer + the reader to general monographs and overviews such as + [Rosser and Turquette, 1952; Rescher, 1969; Urquhart, 1986; + Bolc and Borowik, 1992; Malinowski, 1993; Hahnle, 1994; + Panti, to appear] . More questionable, perhaps, than the + omissions is the need for a handbook chapter on tableaux + for many-valued logics in the first place.}, + bibkey = {hahnle:tableaux:1999}, + acknowledgement={brucker, 2007-04-24} +} + +@InCollection{ leavens.ea:jml:1999, + author = {Gary T. Leavens and Albert L. Baker and Clyde Ruby}, + title = {{JML}: A Notation for Detailed Design}, + booktitle = {Behavioral Specifications of Businesses and Systems}, + publisher = pub-kluwer, + address = pub-kluwer:adr, + editor = {Haim Kilov and Bernhard Rumpe and Ian Simmonds}, + pages = {175--188}, + year = 1999, + isbn = {978-0-7923-8629-2}, + acknowledgement={brucker, 2007-04-24} +} + +@InCollection{ paulson:fixedpoint:2000, + author = {Lawrence C. Paulson}, + pages = {187--211}, + title = {A fixedpoint approach to (co)inductive and (co)datatype + definitions}, + acknowledgement={brucker, 2007-04-24}, + abstract = {This paper presents a fixedpoint approach to inductive + definitions. In- stead of using a syntactic test such as + ``strictly positive,'' the approach lets definitions + involve any operators that have been proved monotone. It is + conceptually simple, which has allowed the easy + implementation of mutual recursion and iterated + definitions. It also handles coinductive definitions: + simply replace the least fixedpoint by a greatest + fixedpoint. The method has been implemented in two of + Isabelle's logics, zf set theory and higher-order logic. It + should be applicable to any logic in which the + Knaster-Tarski theorem can be proved. Examples include + lists of n elements, the accessible part of a relation and + the set of primitive recursive functions. One example of a + coinductive definition is bisimulations for lazy lists. + Recursive datatypes are examined in detail, as well as one + example of a codatatype: lazy lists. The Isabelle package + has been applied in several large case studies, including + two proofs of the Church-Rosser theorem and a coinductive + proof of semantic consistency. The package can be trusted + because it proves theorems from definitions, instead of + asserting desired properties as axioms. }, + bibkey = {paulson:fixedpoint:2000}, + crossref = {plotkin.ea:proof:2000} +} + +@InCollection{ gordon:from:2000, + author = {Mike Gordon}, + title = {From \acs{lcf} to {\acs{hol}}: a short history}, + pages = {169--185}, + acknowledgement={brucker, 2007-04-24}, + abstract = {The original LCF system was a proof-checking program + developed at Stanford University by Robin Milner in 1972. + Descendents of LCF now form a thriving paradigm in computer + assisted reasoning. Many of the developments of the last 25 + years have been due to Robin Milner, whose influence on the + field of automated reasoning has been diverse and profound. + One of the descendents of LCF is HOL, a proof assistant for + higher order logic originally developed for reasoning about + hardware. The multi-faceted contribution of Robin Milner to + the development of HOL is remarkable. Not only did he + invent the LCF-approach to theorem proving, but he also + designed the ML programming language underlying it and the + innovative polymorphic type system used both by ML and the + LCF and HOL logics. Code Milner wrote is still in use + today, and the design of the hardware verification system + LCF_LSM (a now obsolete stepping stone from LCF to HOL) was + inspired by Milner's Calculus of Communicating Systems + (CCS). }, + crossref = {plotkin.ea:proof:2000} +} + +@Book{ plotkin.ea:proof:2000, + booktitle = {Proof, Language, and Interaction: Essays in Honour of + {Robin Milner}}, + title = {Proof, Language, and Interaction: Essays in Honour of + {Robin Milner}}, + publisher = pub-mit, + address = pub-mit:adr, + year = 2000, + isbn = {978-0-262-16188-6}, + acknowledgement={brucker, 2007-04-24}, + editor = {Gordon Plotkin and Colin Stirling and Mads Tofte} +} + +@InCollection{ pfenning:logical:2001, + author = {Frank Pfenning}, + title = {Logical Frameworks}, + booktitle = {Handbook of Automated Reasoning}, + editor = {Alan Robinson and Andrei Voronkov}, + chapter = 17, + volume = 2, + isbn = {0-444-50812-0}, + pages = {1063--1147}, + publisher = pub-elsevier, + address = pub-elsevier:adr, + year = 2001, + acknowledgement={brucker, 2007-04-24}, + abstract = {The specification of a deductive system usually proceeds + in two stages: first we define the syntax of an object + language and then the axioms and rules of inference. In + order to concentrate on the meanings of expressions we + ignore issues of concrete syntax and parsing and + concentrate on specifying abstract syntax. Di#erent + framework implementations provide di#erent means for + customizing the parser in order to embed the desired + object-language syntax. As an example throughout this + chapter we consider formulations of intuitionistic and + classical first-order logic. In order to keep this chapter + to a manageable length, we restrict ourselves to the + fragment containing implication, negation, and universal + quantification. The reader is invited to test his or her + understanding by extending the development to include a + more complete set of connectives and quantifiers. } +} + +@InProceedings{ pfenning:hoas:1988, + author = {Frank Pfenning and Conal Elliot}, + title = {Higher-Order Abstract Syntax}, + year = 1988, + isbn = {0-89791-269-1}, + location = {Atlanta, Georgia, United States}, + doi = {10.1145/53990.54010}, + pages = {199--208}, + acknowledgement={brucker, 2007-04-24}, + publisher = pub-acm, + address = pub-acm:adr, + booktitle = {Conference on Programming Language Design and + Implementation (\acs{pldi})}, + bibkey = {pfenning:hoas:1988} +} + +@InProceedings{ boulton.ea:experience:1993, + crossref = {stavridou.ea:international:1993}, + author = {Richard Boulton and Andrew Gordon and Michael J. C. Gordon + and John Harrison and John Herbert and John Van Tassel}, + title = {Experience with embedding hardware description languages + in {\acs{hol}}}, + bibkey = {boulton.ea:experience:1993}, + abstract = {The semantics of hardware description languages can be + represented in higher order logic. This provides a formal + definition that is suitable for machine processing. + Experiments are in progress at Cambridge to see whether + this method can be the basis of practical tools based on + the HOL theorem-proving assistant. Three languages are + being investigated: ELLA, Silage and VHDL. The approaches + taken for these languages are compared and current progress + on building semantically-based theorem-proving tools is + discussed.}, + acknowledgement={brucker, 2007-04-24}, + pages = {129--156} +} + +@Proceedings{ stavridou.ea:international:1993, + editor = {Victoria Stavridou and Thomas F. Melham and Raymond T. + Boute}, + booktitle = PROC # { the International Conference on Theorem + Provers in Circuit Design: Theory, Practice and + Experience}, + title = {International Conference on Theorem Provers in Circuit + Design: Theory, Practice and Experience (\acs{tpcd})}, + series = {\acs{ifip} Transactions}, + volume = {A-10}, + isbn = {0-444-89686-4}, + publisher = pub-north, + address = pub-north:adr, + date = {22--24 June 1993}, + acknowledgement={brucker, 2007-04-24}, + year = 1993 +} + +@InProceedings{ khoshafian.ea:object:1986, + author = {Setrag N. Khoshafian and George P. Copeland}, + title = {Object identity}, + booktitle = {Object-oriented programming systems, languages and + applications (\acs{oopsla})}, + year = 1986, + isbn = {0-89791-204-7}, + pages = {406--416}, + location = {Portland, Oregon, United States}, + doi = {10.1145/28697.28739}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={brucker, 2007-04-24} +} + +@InProceedings{ melham:package:1992, + author = {Thomas F. Melham}, + title = {A Package for Inductive Relation Definitions in {\HOL}}, + pages = {350--357}, + isbn = {0-8186-2460-4}, + editor = {Myla Archer and Jennifer J. Joyce and Karl N. Levitt and + Phillip J. Windley}, + booktitle = {International Workshop on the {\HOL} Theorem Proving + System and its Applications (\acs{tphols})}, + month = aug, + publisher = pub-ieee, + address = pub-ieee:adr, + year = 1992, + acknowledgement={brucker, 2007-04-24}, + location = {Davis, California, \acs{usa}}, + bibkey = {melham:package:1992} +} + +@InProceedings{ hahnle:efficient:1994, + doi = {10.1109/ismvl.1994.302195}, + author = {Reiner H\"{a}hnle}, + booktitle = {International Symposium on Multiple-Valued Logics + (\acs{ismvl})}, + location = {Boston/MA, \acs{usa}}, + pages = {240--249}, + isbn = {0-8186-5650-6}, + publisher = pub-ieee, + address = pub-ieee:adr, + title = {Efficient Deduction in Many-Valued Logics}, + year = 1994, + abstract = {This paper tries to identify the basic problems + encountered in automated theorem proving in many-valued + logics and demonstrates to which extent they can be + currently solved. To this end a number of recently + developed techniques are reviewed. We list the avenues of + research in many-valued theorem proving that are in our + eyes the most promising.}, + acknowledgement={brucker, 2007-04-24}, + bibkey = {hahnle:efficient:1994} +} + +@InProceedings{ nipkow.ea:java:2000, + author = {Tobias Nipkow and David von Oheimb and Cornelia Pusch}, + title = {{$\mu$Java}: Embedding a Programming Language in a Theorem + Prover}, + booktitle = {Foundations of Secure Computation}, + series = {\acs{nato} Science Series F: Computer and Systems + Sciences}, + volume = 175, + year = 2000, + publisher = pub-ios, + address = pub-ios:adr, + isbn = {978-1-58603-015-5}, + editor = {Friedrich L. Bauer and Ralf Steinbr{\"u}ggen}, + abstract = {This paper introduces the subset $micro$Java of Java, + essentially by omitting everything but classes. The type + system and semantics of this language (and a corresponding + abstract Machine $micro$JVM) are formalized in the theorem + prover Isabelle/\acs{hol}. Type safety both of $micro$Java + and the $micro$JVM are mechanically verified. + + To make the paper self-contained, it starts with + introductions to Isabelle/\acs{hol} and the art of + embedding languages in theorem provers.}, + pages = {117--144}, + acknowledgement={brucker, 2007-04-24}, + bibkey = {nipkow.ea:java:2000} +} + +@InProceedings{ beckert.ea:translating:2002, + editor = {Serge Autexier and Heiko Mantel}, + pages = {113--123}, + booktitle = {Verification Workshop (\acs{verify})}, + location = {Copenhagen, Denmark}, + author = {Bernhard Beckert and Uwe Keller and Peter H. Schmitt}, + title = {Translating the {O}bject {C}onstraint {L}anguage into + First-order Predicate Logic}, + year = 2002, + abstract = {In this paper, we define a translation of \acs{uml} class + diagrams with OCL constraints into first-order predicate + logic. The goal is logical reasoning about \acs{uml} models. + + We put an emphasis on usability of the formulas resulting + from the translation, and we have developed optimisations + and heuristics to enhance the efficiency of the theorem + proving process. + + The translation has been implemented as part of the KeY + system, but our implementation can also be used + stand-alone. }, + acknowledgement={brucker, 2007-04-24}, + bibkey = {beckert.ea:translating:2002} +} + +@InProceedings{ demuth.ea:generation:2005, + author = {Birgit Demuth and Heinrich Hussmann and Ansgar Konermann}, + title = {Generation of an {\acs{ocl}} 2.0 Parser}, + booktitle = {Workshop on Tool Support for \acs{ocl} and Related + Formalisms---Needs and Trends}, + location = {Montego Bay, Jamaica, October 4, 2005}, + pages = {38--52}, + publisher = {\acs{epfl}}, + year = 2005, + editor = {Thomas Baar}, + series = {Technical Report LGL-REPORT-2005-001}, + acknowledgement={brucker, 2007-04-24} +} + +@InProceedings{ aredo:formalizing:1999, + author = {Demissie B. Aredo}, + booktitle = {\acs{oopsla}'99 Workshop on Rigorous Modeling and Analysis + with the \acs{uml}: Challenges and Limitations, Denver, + Colorado}, + title = {Formalizing {\acs{uml}} Class Diagrams in {\acs{pvs}}}, + year = 1999, + month = nov, + address = {Denver, Colorado, \acs{usa}}, + acknowledgement={brucker, 2007-04-24} +} + +@InProceedings{ jackson.ea:alcoa:2000, + abstract = {Alcoa is a tool for analyzing object models. It has a + range of uses. At one end, it can act as a support tool for + object model diagrams, checking for consistency of + multiplicities and generating sample snapshots. At the + other end, it embodies a lightweight formal method in which + subtle properties of behaviour can be investigated. Alcoa's + input language, Alloy, is a new notation based on Z. Its + development was motivated by the need for a notation that + is more closely tailored to object models (in the style of + \acs{uml}), and more amenable to automatic analysis. Like + Z, Alloy supports the description of systems whose state + involves complex relational structure. State and + behavioural properties are described declaratively, by + conjoining constraints. This makes it possible to develop + and analyze a model incrementally, with Alcoa investigating + the consequences of whatever constraints are given. Alcoa + works by translating constraints to boolean formulas, and + then applying state-of-the-art SAT solvers. It can analyze + billions of states in seconds. }, + author = {Daniel Jackson and Ian Schechter and Ilya Shlyakhter }, + booktitle = {International Conference on Software Engineering + (\acs{icse})}, + language = {USenglish}, + month = jun, + public = {yes}, + doi = {10.1109/ICSE.2000.870482}, + location = {Limerick, Ireland}, + isbn = {1-58113-206-9}, + pages = {730--733}, + topic = {formalism}, + keywords = {Aloca, Alloy}, + title = {{A}lcoa: the {A}lloy Constraint Analyzer }, + year = 2000, + timestamp = 962701274, + acknowledgement={none}, + publisher = pub-acm, + address = pub-acm:adr +} + +@Article{ hahnle:many-valued:2005, + author = {Reiner H\"{a}hnle}, + title = {Many-Valued Logic, Partiality, and Abstraction in Formal + Specification Languages}, + journal = {Logic Journal of the \textsc{igpl}}, + year = 2005, + volume = 13, + pages = {415--433}, + month = jul, + doi = {10.1093/jigpal/jzi032}, + number = 4, + acknowledgement={brucker, 2007-05-04} +} + +@Booklet{ levens.ea:jml:2007, + bibkey = {levens.ea:jml:2007}, + author = {Gary T. Leavens and Erik Poll and Curtis Clifton and + Yoonsik Cheon and Clyde Ruby and David R. Cok and Peter + M\"{u}ller and Joseph Kiniry and Patrice Chalin}, + title = {{\acs{jml}} Reference Manual (Revision 1.2)}, + month = feb, + year = 2007, + organization = {Department of Computer Science, Iowa State University.}, + note = {Available from \url{http://www.jmlspecs.org}}, + acknowledgement={brucker, 2007-04-23} +} + +@InProceedings{ broy.ea:uml2:2006, + bibkey = {broy.ea:uml2:2006}, + author = {Manfred Broy and Michelle L. Crane and J{\"u}rgen Dingel + and Alan Hartman and Bernhard Rumpe and Bran Selic}, + title = {2nd \acs{uml} 2 Semantics Symposium: Formal Semantics for + {\acs{uml}}}, + doi = {10.1007/978-3-540-69489-2_39}, + pages = {318--323}, + abstract = {The purpose of this symposium, held in conjunction with + \acs{models} 2006, was to present the current state of + research of the UML 2 Semantics Project. Equally important + to receiving feedback from an audience of experts was the + opportunity to invite researchers in the field to discuss + their own work related to a formal semantics for the + Unified Modeling Language. This symposium is a follow-on to + our first workshop, held in conjunction with ECMDA 2005.}, + acknowledgement={brucker, 2007-04-23}, + crossref = {kuhne:models:2006} +} + +@InProceedings{ hafner.ea:towards:2006, + author = {Michael Hafner and Muhammad Alam and Ruth Breu}, + title = {Towards a {MOF/QVT}-Based Domain Architecture for Model + Driven Security}, + booktitle = {MoDELS}, + year = 2006, + pages = {275--290}, + ee = {10.1007/11880240_20}, + crossref = {nierstrasz.ea:model:2006} +} + +@Proceedings{ kuhne:models:2006, + doi = {10.1007/978-3-540-69489-2}, + booktitle = {Models in Software Engineering---Workshops and Symposia at + \acs{models} 2006}, + title = {Models in Software Engineering---Workshops and Symposia at + \acs{models} 2006}, + isbn = {978-3-540-69488-5}, + publisher = pub-springer, + paddress = pub-springer:adr, + address = {Genua, Italy}, + volume = 4364, + series = s-lncs, + year = 2006, + acknowledgement={brucker, 2007-04-23}, + editor = {Thomas K{\"u}hne} +} + +@Book{ russell:introduction:1919, + author = {Bertrand Russell}, + title = {Introduction to Mathematical Philosophy}, + publisher = {George Allen \& Unwin}, + year = 1919, + acknowledgement={brucker, 2007-04-23}, + address = {London} +} + +@Article{ bertino.ea:trbac:2001, + author = {Elisa Bertino and Piero Andrea Bonatti and Elena Ferrari}, + title = {TRBAC: A temporal role-based access control model}, + journal = {ACM Trans. Inf. Syst. Secur.}, + volume = 4, + number = 3, + year = 2001, + issn = {1094-9224}, + pages = {191--233}, + doi = {10.1145/501978.501979}, + publisher = pub-acm, + address = pub-acm:adr, + tags = {noTAG}, + clearance = {unclassified}, + timestap = {2008-05-29} +} + +@Article{ moyer.ea:generalized:2001, + title = {Generalized role-based access control}, + author = {Moyer, M.J. and Abamad, M.}, + journal = {Distributed Computing Systems, 2001. 21st International + Conference on.}, + year = 2001, + month = {Apr}, + pages = {391--398}, + keywords = {authorisation, distributed processing, transaction + processingGRBAC, JPEG, RBAC, access control, access control + decisions, access control models, environment roles, + environmental information, expressive power, generalized + role based access control, object roles, object type, rich + access control policies, security policy, security-relevant + characteristics, sensitivity level, subject roles}, + doi = {10.1109/ICDSC.2001.918969}, + abstract = {Generalized Role-Based Access Control (GRBAC) is a new + paradigm for creating and maintaining rich access control + policies. GRBAC leverages and extends the power of + traditional role based access control (RBAC) by + incorporating subject roles, object roles and environment + roles into access control decisions. Subject roles are like + traditional RBAC roles: they abstract the security-relevant + characteristics of subjects into categories that can be + used in defining a security policy. Similarly, object roles + abstract the various properties of objects, such as object + type (e.g., text, JPEG, executable) or sensitivity level + (e.g., classified, top secret) into categories. Environment + roles capture environmental information, such as time of + day or system load so it can be used to mediate access + control. Together, these three types of roles offer + flexibility and expressive power, as well as a degree of + usability not found in current access control models}, + tags = {noTAG}, + clearance = {unclassified}, + timestap = {2008-05-29} +} + +@InProceedings{ zhang.ea:role-based:2002, + author = {Longhua Zhang and Gail-Joon Ahn and Bei-Tseng Chu}, + title = {A role-based delegation framework for healthcare + information systems}, + booktitle = PROC # { the seventh \acs{acm} symposium on Access + control models and technologies (\acs{sacmat})}, + year = 2002, + isbn = {1-58113-496-7}, + pages = {125--134}, + location = {Monterey, California, \acs{usa}}, + doi = {10.1145/507711.507731}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {As organizations implement information strategies that + call for sharing access to resources in the networked + environment, mechanisms must be provided to protect the + resources from adversaries. The proposed delegation + framework addresses the issue of how to advocate selective + information sharing in role-based systems while minimizing + the risks of unauthorized access. We introduce a systematic + approach to specify delegation and revocation policies + using a set of rules. We demonstrate the feasibility of our + framework through policy specification, enforcement, and a + proof-of-concept implementation on specific domains, e.g. + the healthcare environment. We believe that our work can be + applied to organizations that rely heavily on collaborative + tasks.}, + tags = {noTAG}, + clearance = {unclassified}, + timestap = {2008-05-29} +} + +@InProceedings{ wilikens.ea:context-related:2002, + author = {Marc Wilikens and Simone Feriti and Alberto Sanna and + Marcelo Masera}, + title = {A context-related authorization and access control method + based on \acs{rbac}: A case study from the health care + domain}, + booktitle = PROC # { the seventh \acs{acm} symposium on Access + control models and technologies (\acs{sacmat})}, + year = 2002, + isbn = {1-58113-496-7}, + pages = {117--124}, + location = {Monterey, California, USA}, + doi = {10.1145/507711.507730}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {This paper describes an application of authorization and + access control based on the Role Based Access Control + (RBAC) method and integrated in a comprehensive trust + infrastructure of a health care application. The method is + applied to a health care business process that involves + multiple actors accessing data and resources needed for + performing clinical and logistics tasks in the application. + The notion of trust constituency is introduced as a concept + for describing the context of authorisation. In addition, + the applied RBAC covers time constraints, hierarchies and + multi-level authorization rules for coping with the + multi-actor nature and the complexity of the application + domain. The DRIVE RBAC model clearly distinguishes between + static role assignment to users and dynamic allocation of + roles at session time. The paper, while focusing on the + authorization and access control approach, also describes + how the RBAC functions have been integrated in a trust + infrastructure including smart cards.}, + tags = {noTAG}, + clearance = {unclassified}, + timestap = {2008-05-29} +} + +@InProceedings{ ahn.ea:towards:2007, + author = {Gail-Joon Ahn and Hongxin Hu}, + title = {Towards realizing a formal \acs{rbac} model in real + systems}, + booktitle = PROC # { the seventh \acs{acm} symposium on Access + control models and technologies (\acs{sacmat})}, + year = 2007, + isbn = {978-1-59593-745-2}, + pages = {215--224}, + location = {Sophia Antipolis, France}, + doi = {10.1145/1266840.1266875}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {There still exists an open question on how formal models + can be fully realized in the system development phase. The + Model Driven Development (MDD) approach has been recently + introduced to deal with such a critical issue for building + high assurance software systems. + + There still exists an open question on how formal models + can be fully realized in the system development phase. The + Model Driven Development (MDD) approach has been recently + introduced to deal with such a critical issue for building + high assurance software systems. + + The MDD approach focuses on the transformation of + high-level design models to system implementation modules. + However, this emerging development approach lacks an + adequate procedure to address security issues derived from + formal security models. In this paper, we propose an + empirical framework to integrate security model + representation, security policy specification, and + systematic validation of security model and policy, which + would be eventually used for accommodating security + concerns during the system development. We also describe + how our framework can minimize the gap between security + models and the development of secure systems. In addition, + we overview a proof-of-concept prototype of our tool that + facilitates existing software engineering mechanisms to + achieve the above-mentioned features of our framework.}, + tags = {noTAG}, + clearance = {unclassified}, + timestap = {2008-05-29} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%% un-checked entries +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +@Book{ woodcock.ea:using:1996, + abstract = {This book contains enough material for three complete + courses of study. It provides an introduction to the world + of logic, sets and relations. It explains the use of the + Znotation in the specification of realistic systems. It + shows how Z specifications may be refined to produce + executable code; this is demonstrated in a selection of + casestudies.This book is both authoritative and + comprehensive. It strikes the right balance between the + formality of mathematics and the practical needs of + industrial softwaredevelopment. It is faithful to the draft + ISO standard for Z. It covers the essentials of + specification, refinement, and proof, revealing techniques + never previouslypublished.}, + author = {Jim Woodcock and Jim Davies}, + price = {\$37.95}, + length = 391, + isbn = {0-13-948472-8}, + language = {USenglish}, + public = {yes}, + publisher = {Prentice Hall}, + title = {Using {Z}: {S}pecification, {R}efinement, and {P}roof}, + series = {Prentice Hall International Series in Computer Science}, + topic = {formalism}, + keywords = {formal methods, Z}, + library = {FAW (25/91): 91: CD/3.2/125}, + url = {http://softeng.comlab.ox.ac.uk/usingz/}, + year = 1996, + timestamp = 962966715, + acknowledgement={none}, + bibkey = {woodcock.ea:using:1996} +} + +@InProceedings{ dick.ea:testing:1993, + bibkey = {dick.ea:testing:1993}, + author = {Jeremy Dick and Alain Faivre}, + title = {Automating the Generation and Sequencing of Test Cases + from Model-Based Specications}, + pages = {268--284}, + booktitle = {Formal Methods Europe 93: Industrial-Strength Formal + Methods}, + editor = {J.C.P. Woodcock and P.G. Larsen}, + month = apr, + year = 1993, + volume = 670, + series = s-lncs, + publisher = pub-springer, + address = pub-springer:adr, + acknowledgement={none} +} + +@Article{ grieskamp.ea:instrumenting:2004, + author = {Wolfgang Grieskamp and Nikolai Tillmann and Margus + Veanes}, + booktitle = {Third International Conference on Quality Software: QSIC + 2003}, + title = {Instrumenting scenarios in a model-driven development + environment}, + journal = {Information and Software Technology}, + year = 2004, + number = 15, + volume = 46, + pages = {1027--1036}, + doi = {10.1016/j.infsof.2004.07.007}, + abstract = {SpecExplorer is an integrated environment for model-driven + development of .NET software. In this paper we discuss how + scenarios can be described in SpecExplorer's modeling + language, Spec#, and how the SpecExplorer tool can be used + to validate those scenarios by various means.}, + acknowledgement={none}, + bibkey = {grieskamp.ea:instrumenting:2004} +} + +@Book{ abrial:event-b:2009, + bibkey = {abrial:event-b:2009}, + title = {Modeling in Event-B: System and Software Design}, + publisher = {Cambridge University Press}, + year = 2009, + author = {Jean-Raymond Abrial}, + acknowledgement={none}, + address = {New York, \acs{ny}, \acs{usa}} +} + +@Book{ abrial:b-book:1996, + bibkey = {abrial:b-book:1996}, + author = {Jean-Raymond Abrial}, + title = {The {B-Book}: assigning programs to meanings}, + year = 1996, + isbn = {0-521-49619-5}, + publisher = {Cambridge University Press}, + acknowledgement={none}, + address = {New York, \acs{ny}, \acs{usa}} +} + +@TechReport{ leino.ea:escjava:2000, + abstract = {The Compaq Extended Static Checker for Java (ESC/Java) is + a programming tool that attempts to find common run-time + errors in Java programs by static analysis of the program + text. Users can control the amount and kinds of checking + that ESC/Java performs by annotating their programs with + specially formatted comments called pragmas. This manual is + designed to serve both as an introduction to ESC/Java and + as a reference manual. It starts by providing an overview + of ESC/Java through an illustrative example of its use and + a summary of its features, and then goes on to document all + the pragmas supported by ESC/Java and all the kinds of + warnings that it generates. Appendices provide a brief + sketch of ESC/Java's implementation, information about + obtaining ESC/Java, and some discussion of its + limitations}, + author = {K. Rustan M. Leino and Greg Nelson and James B. Saxe}, + institution = {Compaq Systems Research Center}, + language = {USenglish}, + month = oct, + public = {yes}, + title = {{\acs{esc}}/{Java} User's Manual}, + url = {http://gatekeeper.dec.com/pub/DEC/SRC/technical-notes/abstracts/src-tn-2000-002.html} + , + number = {SRC-2000-002}, + year = 2000, + keywords = {Java}, + topic = {tools}, + acknowledgement={none}, + bibkey = {leino.ea:escjava:2000} +} + +@Book{ kleppe.ea:mda:2003, + bibkey = {kleppe.ea:mda:2003}, + title = {\acs{mda} Explained. The Model Driven Architecture: + Practice and Promise}, + acknowledgement={none}, + publisher = {Addison-Wesley}, + year = 2003, + author = {Anneke Kleppe and Jos Warmer and Wim Bast} +} + +@Article{ schmidt:mde:2006, + author = {Douglas C. Schmidt}, + title = {Guest Editor's Introduction: Model-Driven Engineering}, + journal = {Computer}, + volume = 39, + number = 2, + acknowledgement={none}, + year = 2006, + issn = {0018-9162}, + pages = {25--31}, + doi = {10.1109/MC.2006.58}, + publisher = {IEEE Computer Society}, + address = {Los Alamitos, \acs{ca}, \acs{usa}} +} + +@InCollection{ gaudel:testing:1995, + author = {Marie Claude Gaudel}, + title = {Testing can be formal, too}, + year = 1995, + booktitle = {\textsc{tapsoft}'95: Theory and Practice of Software + Development}, + isbn = {3-540-59293-8}, + address = pub-springer:adr, + paddress = {Heidelberg, Germany}, + pages = {82--96}, + publisher = pub-springer, + series = s-lncs, + number = 915, + editor = {Peter D. Mosses and Mogens Nielsen and Michael I. + Schwartzbach}, + acknowledgement={none}, + bibkey = {gaudel:testing:1995} +} + +@InProceedings{ jurjens.ea:specification-based:2001, + author = {Jan J{\"u}rjens and Guido Wimmel}, + title = {Specification-Based Testing of Firewalls}, + booktitle = {Ershov Memorial Conference}, + year = 2001, + pages = {308--316}, + crossref = {bjorner.ea:perspectives:2001}, + acknowledgement={none} +} + +@Proceedings{ bjorner.ea:perspectives:2001, + editor = {Dines Bj{\o}rner and Manfred Broy and Alexandre V. + Zamulin}, + title = {Perspectives of System Informatics, 4th International + Andrei Ershov Memorial Conference, PSI 2001, Akademgorodok, + Novosibirsk, Russia, July 2-6, 2001, Revised Papers}, + booktitle = {Ershov Memorial Conference}, + publisher = pub-springer, + adress = pub-springer:adr, + series = s-lncs, + volume = 2244, + year = 2001, + isbn = {3-540-43075-X}, + acknowledgement={none} +} + +@InProceedings{ bishop.ea:rigorous:2005, + author = {Steve Bishop and Matthew Fairbairn and Michael Norrish and + Peter Sewell and Michael Smith and Keith Wansbrough}, + title = {Rigorous specification and conformance testing techniques + for network protocols, as applied to TCP, UDP, and + sockets}, + booktitle = {SIGCOMM}, + year = 2005, + pages = {265--276}, + doi = {10.1145/1080091.1080123}, + crossref = {guerin.ea:proceedings:2005}, + acknowledgement={none} +} + +@Proceedings{ guerin.ea:proceedings:2005, + editor = {Roch Gu{\'e}rin and Ramesh Govindan and Greg Minshall}, + title = PROC # { the ACM SIGCOMM 2005 Conference on + Applications, Technologies, Architectures, and Protocols + for Computer Communications, Philadelphia, Pennsylvania, + \acs{usa}, August 22-26, 2005}, + booktitle = {SIGCOMM}, + publisher = pub-acm, + adress = pub-acm:adr, + year = 2005, + isbn = {1-59593-009-4}, + acknowledgement={none} +} + +@InProceedings{ senn.ea:firewall:2005, + abstract = {Firewalls are widely used to protect networks from + unauthorised access. To ensure that they implement an + organisation's security policy correctly, they need to be + tested. We present an approach that addresses this problem. + Namely, we show how an organisation's network security + policy can be formally specified in a high-level way, and + how this specification can be used to automatically + generate test cases to test a deployed system. In contrast + to other firewall testing methodologies, such as + penetration testing, our approach tests conformance to a + specified policy. Our test cases are organisation-specific + --- i.e.~they depend on the security requirements and on + the network topology ofan organisation --- and can uncover + errors both in the firewall products themselves and in + their configuration.}, + author = {Diana Senn and David A. Basin and Germano Caronni}, + booktitle = {TestCom 2005}, + editor = {Ferhat Khendek and Rachida Dssouli}, + isbn = {3-540-26054-4}, + language = {UKenglish}, + month = {May}, + pages = {226--241}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + title = {Firewall Conformance Testing}, + volume = 3502, + year = 2005, + acknowledgement={none} +} + +@PhDThesis{ bidder:specification:2007, + author = {Diana von Bidder}, + title = {Specification-based Firewall Testing}, + school = {ETH Zurich}, + year = 2007, + public = {yes}, + type = {Ph.D. Thesis}, + acknowledgement={none}, + classification= {thesis}, + note = {\acs{eth} Dissertation No. 17172. Diana von Bidder's + maiden name is Diana Senn.} +} + +@InCollection{ wenzel.ea:building:2007, + abstract = {We present the generic system framework of + Isabelle/Isarunderlying recent versions of Isabelle. Among + other things, Isar provides an infrastructure for Isabelle + plug-ins, comprising extensible state components and + extensible syntax that can be bound to tactical ML + programs. Thus the Isabelle/Isar architecture may be + understood as an extension and refinement of the + traditional LCF approach, with explicit infrastructure for + building derivative systems. To demonstrate the technical + potential of the framework, we apply it to a concrete + formalmethods tool: the HOL-Z 3.0 environment, which is + geared towards the analysis of Z specifications and formal + proof of forward-refinements.}, + author = {Makarius Wenzel and Burkhart Wolff}, + booktitle = {\acs{tphols} 2007}, + editor = {Klaus Schneider and Jens Brandt}, + language = {USenglish}, + acknowledgement={none}, + pages = {352--367}, + publisher = pub-springer, + address = pub-springer:adr, + number = 4732, + series = s-lncs, + title = {Building Formal Method Tools in the {Isabelle}/{Isar} + Framework}, + doi = {10.1007/978-3-540-74591-4_26}, + year = 2007 +} + +@Article{ igarashi.ea:featherweight:2001, + author = {Atsushi Igarashi and Benjamin C. Pierce and Philip + Wadler}, + title = {{Featherweight Java}: a minimal core calculus for {Java} + and {\acs{gj}}}, + journal = j-toplas, + volume = 23, + number = 3, + year = 2001, + issn = {0164-0925}, + pages = {396--450}, + doi = {10.1145/503502.503505}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={none}, + abstract = {Several recent studies have introduced lightweight + versions of Java: reduced languages in which complex + features like threads and reflection are dropped to enable + rigorous arguments about key properties such as type + safety. We carry this process a step further, omitting + almost all features of the full language (including + interfaces and even assignment) to obtain a small calculus, + Featherweight Java, for which rigorous proofs are not only + possible but easy. Featherweight Java bears a similar + relation to Java as the lambda-calculus does to languages + such as ML and Haskell. It offers a similar computational + "feel," providing classes, methods, fields, inheritance, + and dynamic typecasts with a semantics closely following + Java's. A proof of type safety for Featherweight Java thus + illustrates many of the interesting features of a safety + proof for the full language, while remaining pleasingly + compact. The minimal syntax, typing rules, and operational + semantics of Featherweight Java make it a handy tool for + studying the consequences of extensions and variations. As + an illustration of its utility in this regard, we extend + Featherweight Java with generic classes in the style of GJ + (Bracha, Odersky, Stoutamire, and Wadler) and give a + detailed proof of type safety. The extended system + formalizes for the first time some of the key features of + GJ. }, + bibkey = {igarashi.ea:featherweight:2001} +} + +@Article{ zhu.ea:software:29-4, + title = {Software Unit Test Coverage and Adequacy}, + author = {Hong Zhu and Patrick A.V. Hall and John H. R. May}, + journal = {ACM Computing Surveys}, + issn = {0360-0300}, + volume = 29, + url = {http://www.cs.bris.ac.uk/Tools/Reports/Abstracts/1997-zhu.html} + , + number = 4, + language = {USenglish}, + pages = {366--427}, + month = dec, + keywords = {Safety_Critical_Systems}, + year = 1997, + abstract = {Objective measurement of test quality is one of the key + issues in software testing. It has been a major research + focus for the last two decades. Many test criteria have + been proposed and studied for this purpose. Various kinds + of rationale have been presented in support of one + criterion or another. This paper surveys the research work + in this area. The notion of adequacy criteria is examined + together with its role in software dynamic testing. A + review of criteria classification is followed by a summary + of the methods for comparison and assessment of criteria.}, + acknowledgement={none}, + bibkey = {zhu.ea:software:29-4} +} + +@PhDThesis{ wenzel:isabelleisar:2002, + author = {Markus M. Wenzel}, + title = {Isabelle/Isar --- a versatile environment for + human-readable formal proof documents}, + school = {TU M{\"u}nchen}, + year = 2002, + url = {http://tumb1.biblio.tu-muenchen.de/publ/diss/in/2002/wenzel.html} + , + abstract = {The basic motivation of this work is to make formal theory + developments with machine-checked proofs accessible to a + broader audience. Our particular approach is centered + around the Isar formal proof language that is intended to + support adequate composition of proof documents that are + suitable for human consumption. Such primary proofs written + in Isar may be both checked by the machine and read by + human-beings; final presentation merely involves trivial + pretty printing of the sources. Sound logical foundations + of Isar are achieved by interpretation within the generic + Natural Deduction framework of Isabelle, reducing all + high-level reasoning steps to primitive inferences. + + The resulting Isabelle/Isar system is generic with respect + to object-logics and proof tools, just as pure Isabelle + itself. The full Isar language emerges from a small core by + means of several derived elements, which may be combined + freely with existing ones. This results in a very rich + space of expressions of formal reasoning, supporting many + viable proof techniques. The general paradigms of Natural + Deduction and Calculational Reasoning are both covered + particularly well. Concrete examples from logic, + mathematics, and computer-science demonstrate that the Isar + concepts are indeed sufficiently versatile to cover a broad + range of applications.}, + address = {M{\"u}nchen}, + month = feb, + acknowledgement={none}, + bibkey = {wenzel:isabelleisar:2002} +} + +@InProceedings{ frantzen.ea:test:2004, + author = {L. Frantzen and J. Tretmans and T.A.C. Willemse}, + title = {Test Generation Based on Symbolic Specifications}, + booktitle = {FATES 2004}, + year = 2004, + month = sep, + abstract = {Classical state-oriented testing approaches are based on + sim- ple machine models such as Labelled Transition Systems + (LTSs), in which data is represented by concrete values. To + implement these theories, data types which have infinite + universes have to be cut down to infinite vari- ants, which + are subsequently enumerated to fit in the model. This leads + to an explosion of the state space. Moreover, exploiting + the syntactical and/or semantical information of the + involved data types is non-trivial after enumeration. To + overcome these problems, we lift the family of test- ing + relations iocoF to the level of Symbolic Transition Systems + (STSs). We present an algorithm based on STSs, which + generates and executes tests on-the-fly on a given system. + It is sound and complete for the ioco F testing + relations.}, + acknowledgement={none}, + bibkey = {frantzen.ea:test:2004} +} + +@Book{ dagostino.ea:handbook:1996, + title = {Handbook of Tableau Methods}, + editor = {Marcello D'Agostino and Dov Gabbay and Reiner H\"ahnle and + Joachim Posegga}, + publisher = {Kluwer, Dordrecht}, + year = 1996, + isbn = {0-7923-5627-6}, + acknowledgement={none}, + bibkey = {dagostino.ea:handbook:1996} +} + +@Article{ visser.ea:test:2004, + author = {Willem Visser and Corina S. P\u{a}s\u{a}reanu and Sarfraz + Khurshid}, + title = {Test input generation with {Java} {PathFinder}}, + journal = {SIGSOFT Softw. Eng. Notes}, + volume = 29, + number = 4, + year = 2004, + issn = {0163-5948}, + pages = {97--107}, + doi = {10.1145/1013886.1007526}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={none}, + bibkey = {visser.ea:test:2004} +} + +@InProceedings{ pons.ea:practical:2006, + author = {Claudia Pons and Diego Garcia}, + title = {Practical Verification Strategy for Refinement Conditions + in \acs{uml} Models}, + booktitle = {IFIP Workshop on Advanced Software Engineering}, + year = 2006, + pages = {47--61}, + doi = {10.1007/978-0-387-34831-5_4}, + crossref = {ochoa.ea:ifip:2006} +} + +@Proceedings{ ochoa.ea:ifip:2006, + editor = {Sergio F. Ochoa and Gruia-Catalin Roman}, + title = {IFIP 19th World Computer Congress, First International + Workshop on Advanced Software Engineering, Expanding the + Frontiers of Software Technology, August 25, 2006, + Santiago, Chile}, + booktitle = {IFIP Workshop on Advanced Software Engineering}, + publisher = pub-springer, + address = pub-springer:adr, + series = {IFIP}, + volume = 219, + year = 2006, + isbn = {978-0-387-34828-5} +} + +@Misc{ clearsy:atelier-b:2008, + author = {{Clearsy Inc.}}, + title = {{Atelier B}}, + year = 2008, + note = {\url{http://www.atelierb.eu/}} +} + +@Book{ beckert.ea:key:2007, + editor = {Bernhard Beckert and Reiner H\"ahnle and Peter H. Schmitt}, + title = {Verification of Object-Oriented Software: The {\KeY} + Approach}, + volume = 4334, + series = s-lncs, + doi = {10.1007/978-3-540-69061-0}, + publisher = pub-springer, + address = pub-springer:adr, + year = 2007 +} + +@InProceedings{ rudich.ea:checking:2008, + author = {Arsenii Rudich and {\'A}d{\'a}m Darvas and Peter M{\"u}ller}, + title = {Checking Well-Formedness of Pure-Method Specifications}, + booktitle = {FM}, + year = 2008, + pages = {68--83}, + ee = {http://dx.doi.org/10.1007/978-3-540-68237-0_7}, + crossref = {cuellar.ea:fm:2008} +} + +@Proceedings{ cuellar.ea:fm:2008, + editor = {Jorge Cu{\'e}llar and T. S. E. Maibaum and Kaisa Sere}, + title = {FM 2008: Formal Methods, 15th International Symposium on + Formal Methods, Turku, Finland, May 26-30, 2008, + Proceedings}, + booktitle = {FM}, + series = s-lncs, + publisher = pub-springer, + address = pub-springer:adr, + volume = 5014, + year = 2008, + isbn = {978-3-540-68235-6} +} + +@InProceedings{ ledang:b-based:2004, + author = {Hung Ledang}, + title = {B-based Conistency Checking of UML Diagrams}, + booktitle = PROC # { ICT/RDA2004 : the 2nd National Symposium on + Research, Development and Application of Information and + Communication TechnologyAIR'2005}, + year = 2004, + publisher = {Science and Techniques Publisher} +} + +@InProceedings{ krieger.ea:executing, + author = {Matthias P. Krieger and Alexander Knapp.}, + title = {Executing Underspecified OCL Operation Contracts with a + SAT Solver}, + booktitle = PROC # { the OCL 2008 Workshop}, + editor = {to appear}, + note = {\url{http://www.fots.ua.ac.be/events/ocl2008/}} +} + +@InProceedings{ tretmans.ea:cote:2002, + author = {Jan Tretmans and Edsgar Brinksma}, + title = {C\^ote de Resyste --- Automated Model Based Testing}, + booktitle = {Progress 2002 --- 3rd Workshop on Embedded Systems}, + pages = {246--255}, + year = 2002 +} + +@Article{ tretmans:test:1996, + author = {Jan Tretmans}, + title = {Test Generation with Inputs, Outputs and Repetitive + Quiescence}, + journal = {Software --- Concepts and Tools}, + year = 1996, + volume = 17, + number = 3, + pages = {103--120} +} + +@Article{ jard.ea:tgv:2005, + author = {C. Jard and T. J\'eron}, + title = {TGV: Theory, Principles and Algorithms}, + journal = {Software Tools for Technology Transfer}, + year = 2005, + volume = 7, + number = 4, + pages = {297--315} +} + +@InProceedings{ clarke.ea:stg:2002, + author = {D. Clarke and T. J\'eron and V. Rusu and E. Zinovieva}, + title = {STG: A Symbolic Test Generation Tool}, + pages = {470--475}, + year = 2002, + series = s-lncs, + publisher = pub-springer, + address = pub-springer:adr, + volume = {2280} +} + +@InProceedings{ koch.ea:autolink:1998, + author = {B. Koch and J. Grabowski and D. Hogrefe and M. Schmitt}, + title = {AutoLink --- a Tool for Automatic Test Generation from SDL + Specifications}, + booktitle = {Proc. IEEE Intl. Workshop on Industrial Strength Formal + Specification Techniques (WIFT 1998)}, + pages = {114--127}, + year = 1998 +} + +@InProceedings{ bouquet.ea:mastering:2004, + author = {F. Bouquet and B. Legeard and F. Peureux and E. + Torreborre}, + title = {Mastering Test Generation from Smart Card Software Formal + Models}, + booktitle = {Proc. Intl. Workshop on Construction and Analysis of Safe, + Secure and Interoperable Smart devices}, + pages = {70--85}, + year = 2004, + series = s-lncs, + publisher = pub-springer, + address = pub-springer:adr, + volume = {3362} +} + +@InProceedings{ prowell:tool:2003, + author = {S. Prowell}, + title = {A Tool for Model-based Statistical Testing}, + booktitle = {Proc. HICSS'03, IEEE}, + pages = {337.3}, + year = 2003 +} + +@Article{ walton.ea:generating:2000, + author = {G. Walton and J. Poore}, + title = {Generating transition probabilities to support model-based + software testing}, + journal = {Software: Practice and Experience}, + year = 2000, + volume = 30, + number = 10, + pages = {1095--1106} +} + +@Article{ cohen.ea:aetg:1997, + author = {D. Cohen and S. Dalal and M. Fredman and G. Patton}, + title = {The AETG System: An approach to testing Based on + Combinatorial Design}, + journal = {IEEE Transactions on Software Engineering}, + year = 1997, + volume = 23, + number = 7 +} + +@InProceedings{ bohme.ea:hol-boogie:2008, + author = {Sascha B{\"o}hme and K. Rustan M. Leino and Burkhart + Wolff}, + title = {{\acs{hol}-Boogie}---An Interactive Prover for the + {Boogie} Program-Verifier}, + booktitle = {Theorem Proving in Higher Order Logics}, + year = 2008, + pages = {150--166}, + doi = {10.1007/978-3-540-71067-7_15}, + crossref = {otmane.ea:tphols:2008} +} + +@Proceedings{ otmane.ea:tphols:2008, + editor = {Otmane A\"{\i}t Mohamed and C{\'e}sar Mu{\~n}oz and + Sofi{\`e}ne Tahar}, + title = {Theorem Proving in Higher Order Logics (\acs{tphols})}, + booktitle = {Theorem Proving in Higher Order Logics (\acs{tphols})}, + location = {Montreal, Canada}, + month = aug, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 5170, + year = 2008, + isbn = {978-3-540-71065-3} +} + +@InProceedings{ huisman.ea:inheritance:2000, + author = {Marieke Huisman and Bart Jacobs}, + title = {Inheritance in Higher Order Logic: Modeling and + Reasoning}, + doi = {10.1007/3-540-44659-1_19}, + year = 2000, + pages = {301--319}, + crossref = {aagaard.ea:tphols:2000} +} + +@Proceedings{ aagaard.ea:tphols:2000, + editor = {Mark Aagaard and John Harrison}, + location = {Portland, Oregon, USA}, + month = aug, + title = {Theorem Proving in Higher Order Logics (\acs{tphols})}, + booktitle = {Theorem Proving in Higher Order Logics (\acs{tphols})}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 1869, + year = 2000, + isbn = {3-540-67863-8} +} + +@Book{ roscoe:csp:1998, + author = {A.W. Roscoe}, + title = {Theory and Practice of Concurrency}, + publisher = {Prentice Hall}, + year = 1998, + isbn = {0-13-674409-5} +} + +@Article{ foster:error:1980, + title = {Error Sensitive Test Cases Analysis (ESTCA)}, + author = {Foster, K.A.}, + journal = {Software Engineering, IEEE Transactions on}, + year = 1980, + month = {May}, + volume = {SE-6}, + number = 3, + pages = {258--264}, + abstract = {A hardware failure analysis technique adapted to software + yielded three rules for generating test cases sensitive to + code errors. These rules, and a procedure for generating + these cases, are given with examples. Areas for further + study are recommended.}, + keywords = {null Program correctness, progran testing, software + errors, software reliability, test data generation}, + issn = {0098-5589} +} + +@Book{ myers.ea:art:2004, + author = {Glenford J. Myers and Corey Sandler}, + title = {The Art of Software Testing}, + year = 2004, + isbn = 0471469122, + publisher = {John Wiley \& Sons} +} + +@InProceedings{ tillmann.ea:pex:2008, + author = {Nikolai Tillmann and Jonathan de Halleux}, + title = {{Pex}---White Box Test Generation for {.NET}}, + booktitle = {TAP}, + year = 2008, + pages = {134-153}, + doi = {10.1007/978-3-540-79124-9_10}, + crossref = {beckert.ea:tests:2008}, + abstract = {Pex automatically produces a small test suite with high + code coverage for a .NET program. To this end, Pex performs + a systematic program analysis (using dynamic symbolic + execution, similar to path-bounded model-checking) to + determine test inputs for Parameterized Unit Tests. Pex + learns the program behavior by monitoring execution traces. + Pex uses a constraint solver to produce new test inputs + which exercise different program behavior. The result is an + automatically generated small test suite which often + achieves high code coverage. In one case study, we applied + Pex to a core component of the .NET runtime which had + already been extensively tested over several years. Pex + found errors, including a serious issue.} +} + +@InProceedings{ halleux.ea:parameterized:2008, + author = {Jonathan de Halleux and Nikolai Tillmann}, + title = {Parameterized Unit Testing with {Pex}}, + booktitle = {TAP}, + year = 2008, + pages = {171--181}, + doi = {10.1007/978-3-540-79124-9_12}, + crossref = {beckert.ea:tests:2008}, + abstract = {This hands-on tutorial will teach the principles of + Parameterized Unit Testing [5,4] with Pex [2], an automatic + test input generator for .NET which performs a systematic + program analysis, similar to path bounded model-checking. A + parameterized unit test is simply a method that takes + parameters, calls the code under test, and states + assertions.} +} + +@Proceedings{ beckert.ea:tests:2008, + editor = {Bernhard Beckert and Reiner H{\"a}hnle}, + title = {Tests and Proofs, Second International Conference, TAP + 2008, Prato, Italy, April 9-11, 2008. Proceedings}, + booktitle = {TAP}, + series = s-lncs, + publisher = pub-springer, + address = pub-springer:adr, + volume = 4966, + year = 2008, + isbn = {978-3-540-79123-2} +} + +%%%%%% +@InProceedings{ povey:enforcing:1999, + author = {Dean Povey}, + title = {Enforcing well-formed and partially-formed transactions + for {Unix}}, + booktitle = PROC # { the 8th conference on \acs{usenix} Security + Symposium}, + volume = 8, + year = 1999, + publisher = {\acs{usenix} Association}, + location = {Berkeley, \acs{ca}}, + pages = {5--5} +} + +@InProceedings{ longstaff.ea:model:2000, + author = {J.J. Longstaff and M.A. Lockyer and M.G. Thick}, + title = {A Model of Accountability, Confidentiality and Override + for Healthcare and other Applications}, + booktitle = PROC # { the fifth \acs{acm} workshop on Role-based + access control}, + year = 2000, + isbn = {1-58113-259-X}, + pages = {71--76}, + publisher = pub-acm, + address = pub-acm:adr, + doi = {10.1145/344287.344304} +} + +@InProceedings{ rissanen.ea:towards:2004, + author = {Erik Rissanen}, + title = {Towards a Mechanism for Discretionary Overriding of Access + Control (Transcript of Discussion)}, + booktitle = PROC # { the 12th International Workshop on Security + Protocols}, + year = 2004, + pages = {320--323}, + month = mar, + doi = {10.1007/11861386_39}, + abstract = {Last year, the Swedish Prime Minister was stabbed to death + in a shopping mall in Stockholm, and of course the police + thoroughly investigated it. They had some privacy problems + during the investigation: many policemen just looked at the + case, because there was no access control on the police + system. They didn{\^a}\80\99t have a whole system on-line, + because they cannot really predict the needs of individual + policemen, and they cannot really audit the whole thing + either because there were so many accesses. In the case of + the prime minister we suspect that something was going on + because he was a famous person, and they know from + experience that this tends to happen with famous people, + but in the case of a policemen accessing his + neighbour{\^a}\80\99s data, or something like that, then there + is little reason to notice that something is going on.}, + crossref = {bruce.ea:security:2006} +} + +@Proceedings{ bruce.ea:security:2006, + series = s-lncs, + publisher = pub-springer, + address = pub-springer:adr, + editor = {Bruce Christianson and Bruno Crispo and James A. Malcolm + and Michael Roe}, + title = {Security Protocols, 12th International Workshop, + Cambridge, UK, April 26-28, 2004. Revised Selected Papers}, + booktitle = {Security Protocols Workshop}, + volume = 3957, + year = 2006, + isbn = {3-540-40925-4} +} + +@InProceedings{ rissanen.ea:discretionary:2004, + author = {Erik Rissanen and Babak Sadighi Firozabadi and Marek J. + Sergot}, + title = {Discretionary Overriding of Access Control in the + Privilege Calculus}, + booktitle = PROC # { the Workshop on Formal Aspects Security and + Trust (\acs{fast})}, + year = 2004, + pages = {219--232}, + doi = {10.1007/0-387-24098-5_16}, + crossref = {dimitrakos.ea:formal:2005}, + abstract = {We extend a particular access control framework, the + Privilege Calculus, with a possibility to override denied + access for increased flexibility in hard to define or + unanticipated situations. We require the overrides to be + audited and approved by appropriate managers. In order to + automatically find the authorities who are able to approve + an override, we present an algorithm for authority + resolution. We are able to calculate from the access + control policy who can approve an override without the need + for any additional information.} +} + +@Proceedings{ dimitrakos.ea:formal:2005, + editor = {Theodosis Dimitrakos and Fabio Martinelli}, + title = {Formal Aspects in Security and Trust: Second IFIP TC1 + WG1.7 Workshop on Formal Aspects in Security and Trust + (FAST), an event of the 18th IFIP World Computer Congress, + August 22-27, 2004, Toulouse, France}, + booktitle = {Formal Aspects in Security and Trust}, + publisher = pub-springer, + volume = 173, + address = pub-springer:adr, + year = 2005, + isbn = {0-387-24050-0} +} + +@InProceedings{ alqatawna.ea:overriding:2007, + author = {Ja'far Alqatawna and Erik Rissanen and Babak Sadighi}, + title = {Overriding of Access Control in \textsc{XACML}}, + booktitle = PROC # { the Eighth \acs{ieee} International + Workshop on Policies for Distributed Systems and Networks + (\acs{policy})}, + year = 2007, + isbn = {0-7695-2767-1}, + pages = {87--95}, + doi = {10.1109/POLICY.2007.31}, + address = pub-ieee:adr, + publisher = pub-ieee +} + +@InProceedings{ stevens.ea:new:2002, + author = {Gunnar Stevens and Volker Wulf}, + title = {A new dimension in access control: studying maintenance + engineering across organizational boundaries}, + booktitle = PROC # { the \acs{acm} conference on Computer + supported cooperative work (\acs{cscw})}, + year = 2002, + isbn = {1-58113-560-2}, + pages = {196--205}, + location = {New Orleans, Louisiana, USA}, + doi = {10.1145/587078.587106}, + publisher = pub-acm, + address = pub-acm:adr +} + +@InProceedings{ jaeger.ea:managing:2002, + author = {Trent Jaeger and Antony Edwards and Xiaolan Zhang}, + title = {Managing access control policies using access control + spaces}, + booktitle = PROC # { the seventh \acs{acm} symposium on Access + control models and technologies (\acs{sacmat})}, + year = 2002, + isbn = {1-58113-496-7}, + pages = {3--12}, + location = {Monterey, California, USA}, + doi = {10.1145/507711.507713}, + publisher = pub-acm, + address = pub-acm:adr +} + +@Article{ joshi.ea:generalized:2005, + author = {James B.D. Joshi and Elisa Bertino and Usman Latif and + Arif Ghafoor}, + title = {A Generalized Temporal Role-Based Access Control Model}, + journal = j-tkde, + volume = 17, + number = 1, + issn = {1041-4347}, + year = 2005, + pages = {4--23}, + doi = {10.1109/TKDE.2005.1}, + publisher = pub-ieee, + address = pub-ieee:adr +} + +@InProceedings{ bell.ea:secure:1996, + author = {D. Elliott Bell and Leonard J. LaPadula}, + title = {Secure Computer Systems: A Mathematical Model, Volume + {II}}, + booktitle = {Journal of Computer Security 4}, + year = 1996, + pages = {229--263}, + note = {An electronic reconstruction of \emph{Secure Computer + Systems: Mathematical Foundations}, 1973} +} + +@InProceedings{ bell:looking:2005, + title = {Looking Back at the Bell-La Padula Model}, + author = {D. Elliott Bell}, + journal = PROC # { the 21st Annual Computer Security + Applications Conference}, + year = 2005, + isbn = {1063-9527}, + doi = {10.1109/CSAC.2005.37}, + publisher = {pub-ieee}, + address = pub-ieee:adr, + pages = {337--351} +} + +@Booklet{ oasis:xacml:2005, + title = {{eXtensible Access Control Markup Language (XACML)}, + Version 2.0}, + year = 2005, + url = {http://docs.oasis-open.org/xacml/2.0/XACML-2.0-OS-NORMATIVE.zip} + , + bibkey = {oasis:xacml:2005}, + publisher = {\acs{oases}}, + key = {OASIS}, + language = {USenglish}, + public = {yes} +} + +@InProceedings{ barka.ea:framework:2000, + author = {Ezedin Barka and Ravi Sandhu}, + title = {Framework for Role-based Delegation Models}, + year = 2000, + booktitle = PROC # { the 16th Annual Computer Security + Applications Conference}, + doi = {10.1109/ACSAC.2000.898870}, + isbn = {0-7695-0859-6}, + pages = {168--176}, + publisher = pub-ieee, + address = pub-ieee:adr +} + +@InProceedings{ cheng.ea:fuzzy:2007, + author = {Pau-Chen Cheng and Pankaj Rohatgi and Claudia Keser and + Paul A. Karger and Grant M. Wagner and Angela Schuett + Reninger}, + title = {Fuzzy Multi-Level Security: An Experiment on Quantified + Risk-Adaptive Access Control}, + booktitle = {IEEE Symposium on Security and Privacy}, + year = 2007, + pages = {222--230}, + ee = {http://dx.doi.org/10.1109/SP.2007.21}, + crossref = {ieee:security-privacy:2007} +} + +@Proceedings{ ieee:security-privacy:2007, + title = {2007 IEEE Symposium on Security and Privacy (S{\&}P 2007), + 20-23 May 2007, Oakland, California, USA}, + booktitle = {IEEE Symposium on Security and Privacy}, + publisher = {IEEE Computer Society}, + year = 2007 +} + +@InProceedings{ zhang.ea:toward:2006, + author = {Lei Zhang and Alexander Brodsky and Sushil Jajodia}, + title = {Toward Information Sharing: Benefit And Risk Access + Control (BARAC)}, + booktitle = {POLICY}, + year = 2006, + pages = {45--53}, + doi = {10.1109/POLICY.2006.36}, + crossref = {ieee:policy:2006} +} + +@Proceedings{ ieee:policy:2006, + title = {7th IEEE International Workshop on Policies for + Distributed Systems and Networks (POLICY 2006), 5-7 June + 2006, London, Ontario, Canada}, + booktitle = {POLICY}, + publisher = {IEEE Computer Society}, + year = 2006, + isbn = {0-7695-2598-9} +} + +@InProceedings{ nissanke.ea:risk:2004, + author = {Nimal Nissanke and Etienne J. Khayat}, + title = {Risk Based Security Analysis of Permissions in RBAC}, + booktitle = {WOSIS}, + year = 2004, + pages = {332--341}, + crossref = {fernandez-medina.ea:security:2004} +} + +@Proceedings{ fernandez-medina.ea:security:2004, + editor = {Eduardo Fern{\'a}ndez-Medina and Julio C{\'e}sar + Hern{\'a}ndez Castro and L. Javier Garc\'{\i}a-Villalba}, + title = {Security In Information Systems, Proceedings of the 2nd + International Workshop on Security In Information Systems, + WOSIS 2004, In conjunction with ICEIS 2004, Porto, + Portugal, April 2004}, + booktitle = {WOSIS}, + publisher = {INSTICC Press}, + year = 2004, + isbn = {972-8865-07-4} +} + +@InProceedings{ fisler.ea:verification:2005, + author = {Kathi Fisler and Shriram Krishnamurthi and Leo A. + Meyerovich and Michael Carl Tschantz}, + title = {Verification and change-impact analysis of access-control + policies}, + booktitle = {ICSE}, + year = 2005, + pages = {196--205}, + doi = {10.1145/1062455.1062502}, + crossref = {roman.ea:27th:2005} +} + +@Proceedings{ roman.ea:27th:2005, + editor = {Gruia-Catalin Roman and William G. Griswold and Bashar + Nuseibeh}, + title = {27th International Conference on Software Engineering + (ICSE 2005), 15-21 May 2005, St. Louis, Missouri, USA}, + booktitle = {ICSE}, + address = pub-acm:adr, + publisher = pub-acm, + year = 2005 +} + +@InProceedings{ lin.ea:approach:2007, + author = {Dan Lin and Prathima Rao and Elisa Bertino and Jorge + Lobo}, + title = {An approach to evaluate policy similarity}, + booktitle = {SACMAT}, + year = 2007, + pages = {1--10}, + doi = {10.1145/1266840.1266842}, + crossref = {lotz.ea:sacmat:2007} +} + +@InProceedings{ backes.ea:efficient:2004, + author = {Michael Backes and G{\"u}nter Karjoth and Walid Bagga and + Matthias Schunter}, + title = {Efficient comparison of enterprise privacy policies}, + booktitle = {SAC}, + year = 2004, + pages = {375--382}, + doi = {10.1145/967900.967983}, + crossref = {haddad.ea:proceedings:2004} +} + +@Proceedings{ haddad.ea:proceedings:2004, + editor = {Hisham Haddad and Andrea Omicini and Roger L. Wainwright + and Lorie M. Liebrock}, + title = PROC # { the 2004 ACM Symposium on Applied Computing + (SAC), Nicosia, Cyprus, March 14-17, 2004}, + booktitle = {SAC}, + address = pub-acm:adr, + publisher = pub-acm, + year = 2004, + isbn = {1-58113-812-1} +} + +@InProceedings{ warner.ea:using:2007, + author = {Janice Warner and Vijayalakshmi Atluri and Ravi Mukkamala + and Jaideep Vaidya}, + title = {Using semantics for automatic enforcement of access + control policies among dynamic coalitions}, + booktitle = {SACMAT}, + year = 2007, + pages = {235--244}, + doi = {10.1145/1266840.1266877}, + crossref = {lotz.ea:sacmat:2007} +} + +@Proceedings{ lotz.ea:sacmat:2007, + editor = {Volkmar Lotz and Bhavani M. Thuraisingham}, + title = {SACMAT 2007, 12th ACM Symposium on Access Control Models + and Technologies, Sophia Antipolis, France, June 20-22, + 2007, Proceedings}, + booktitle = {SACMAT}, + address = pub-acm:adr, + publisher = pub-acm, + year = 2007, + isbn = {978-1-59593-745-2} +} + +@InProceedings{ povey:optimistic:1999, + author = {Dean Povey}, + title = {Optimistic Security: A New Access Control Paradigm}, + booktitle = PROC # { the 1999 workshop on New security + paradigms}, + year = 1999, + isbn = {1-58113-149-6}, + pages = {40--45}, + doi = {10.1145/335169.335188}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {Despite the best efforts of security researchers, + sometimes the static nature of authorisation can cause + unexpected risks for users work- ing in a dynamically + changing environment. Disasters, medical emergencies or + time-critical events can all lead to situations where the + ability to relax normal access rules can become critically + impor- tant. + + This paper presents an optimistic access control scheme + where en- forcement of rules is retrospective. The system + administrator is re- lied on to ensure that the system is + not misused, and compensating transactions are used to + ensure that the system integrity can be re- covered in the + case of a breach. It is argued that providing an opti- + mistic scheme alongside a traditional access control + mechanism can provide a useful means for users to exceed + their normal privileges on the rare occasion that the + situation warrants it. + + The idea of a partially-formed transaction is introduced to + show how accesses in an optimistic system might be + constrained. This model is formally described and related + to the Clark-Wilson in- tegrity model.} +} + +@Article{ sandhu.ea:role-based:1996, + author = {Ravi S. Sandhu and Edward J. Coyne and Hal L. Feinstein + and Charles E. Youman}, + title = {Role-Based Access Control Models}, + journal = j-computer, + year = 1996, + volume = 29, + number = 2, + address = pub-ieee:adr, + publisher = pub-ieee, + pages = {38--47}, + url = {http://ite.gmu.edu/list/journals/computer/pdf_ver/i94rbac(org).pdf} + , + abstract = {Abstract This article introduces a family of reference + models for rolebased acce ss control (RBAC) in which + permissions are associated with roles, and users are made + members of appropriate roles. This greatly simplifies + management of permiss ions. Roles are closely related to + the concept of user groups in access control. However, a + role brings together a set of users on one side and a set + of permiss ions on the other, whereas user groups are + typically defined as a set of users o nly. + + The basic concepts of RBAC originated with early multi-user + computer systems. Th e resurgence of interest in RBAC has + been driven by the need for general-purpose customizable + facilities for RBAC and the need to manage the + administration of R BAC itself. As a consequence RBAC + facilities range from simple to complex. This article + describes a novel framework of reference models to + systematically addres s the diverse components of RBAC, and + their interactions.}, + issn = {0018-9162}, + keywords = {Computational linguistics; Computer control systems; + Computer simulation; Computer software; Data abstraction; + Database systems; Discretionary access control; Encoding + (symbols); Integration; Mandator access control; Role based + access control; Semantics; Software encoding; User + interfaces}, + acknowledgement={none}, + bibkey = {sandhu.ea:role-based:1996} +} + +@Booklet{ sarbanes.ea:sox:2002, + title = {{Sarbanes-Oxley} {Act} of 2002}, + author = {P. Sarbanes and G. Oxley and others}, + howpublished = {107th Congress Report, House of Representatives, 2nd + Session, 107--610}, + year = 2002 +} + +@TechReport{ bcbs:baselii:2004, + author = {{Basel Committee on Banking Supervision}}, + title = {{Basel II}: International Convergence of Capital + Measurement and Capital Standards}, + year = 2004, + url = {http://www.bis.org/publ/bcbsca.htm}, + address = {Basel, Switzerland}, + institution = {Bank for International Settlements} +} + +@Book{ dahl.ea:structured:1972, + author = {O.-J. Dahl and E. W. Dijkstra and C. A. R. Hoare}, + title = {Structured Programming}, + publisher = {Academic Press}, + year = 1972, + edition = {3rd}, + volume = 8, + series = {A.P.I.C. Studies in Data Processing}, + address = {London}, + isbn = {0-12-200550-3} +} + +@InProceedings{ bryans:reasoning:2005, + author = {Jery Bryans}, + title = {Reasoning about {XACML} policies using {CSP}}, + booktitle = {SWS '05: Proceedings of the 2005 workshop on Secure web + services}, + year = 2005, + isbn = {1-59593-234-8}, + pages = {28--35}, + location = {Fairfax, VA, USA}, + doi = {10.1145/1103022.1103028}, + address = pub-acm:adr, + publisher = pub-acm +} + +@InProceedings{ chadwick.ea:permis:2002, + author = {David W. Chadwick and Alexander Otenko}, + title = {The \acs{permis} {X.509} role based privilege management + infrastructure}, + booktitle = PROC # { the seventh \acs{acm} symposium on Access + control models and technologies (\acs{sacmat})}, + year = 2002, + isbn = {1-58113-496-7}, + pages = {135--140}, + location = {Monterey, California, USA}, + doi = {10.1145/507711.507732}, + address = pub-acm:adr, + publisher = pub-acm +} + +@InProceedings{ ye.ea:using:2005, + author = {Chunxiao Ye and Zhongfu Wu}, + title = {Using \acs{xml} and \acs{xacml} to Support Attribute Based + Delegation}, + booktitle = {CIT '05: Proceedings of the The Fifth International + Conference on Computer and Information Technology}, + year = 2005, + isbn = {0-7695-2432-X}, + pages = {751--756}, + doi = {10.1109/CIT.2005.196}, + publisher = {IEEE Computer Society}, + address = {Washington, DC, USA} +} + +@Book{ fox.ea:it-sox:2006, + author = {Christopher Fox and Paul Zonneveld}, + abstract = {This publication provides CIOs, IT managers, and control + and assurance professionals with scoping and assessment + ideas, approaches and guidance in support of the IT-related + Committee of Sponsoring Organizations of the Treadway + Commission (COSO) internal control objectives for financial + reporting. + + A streamlined road map is provided to help turn compliance + into a competitive challenge. Lessons learned and + sustaining ideas are also included. + + The second edition is updated for recent US Securities and + Exchange Commission (SEC) and Public Company Accounting and + Oversight Board (PCAOB) guidance related to entity-level + controls, a risk-based/top-down approach, application + controls and the evaluation of deficiencies.}, + title = {\acs{it} Control Objectives for Sarbanes-Oxley: The Role + of \acs{it} in the Design and Implementation of Internal + Control Over Financial Reporting}, + year = 2006, + month = sep, + bibkey = {fox.ea:it-sox:2006}, + num_pages = 128, + edition = {2nd}, + publisher = {IT Governance Institute}, + isbn = {1-933284-76-5}, + address = {Rolling Meadows, IL, USA} +} + +@Article{ basin.ea:automated:2009, + title = {Automated analysis of security-design models}, + journal = j-ist, + volume = 51, + number = 5, + issn = {0950-5849}, + year = 2009, + pages = {815--831}, + doi = {10.1016/j.infsof.2008.05.011}, + author = {David Basin and Manuel Clavel and J{\"u}rgen Doser and + Marina Egea}, + keywords = {Metamodels}, + abstract = {We have previously proposed SecureUML, an expressive + UML-based language for constructing security-design models, + which are models that combine design specifications for + distributed systems with specifications of their security + policies. Here, we show how to automate the analysis of + such models in a semantically precise and meaningful way. + In our approach, models are formalized together with + scenarios that represent possible run-time instances. + Queries about properties of the security policy modeled are + expressed as formulas in UML's Object Constraint Language. + The policy may include both declarative aspects, i.e., + static access-control information such as the assignment of + users and permissions to roles, and programmatic aspects, + which depend on dynamic information, namely the + satisfaction of authorization constraints in a given + scenario. We show how such properties can be evaluated, + completely automatically, in the context of the metamodel + of the security-design language. We demonstrate, through + examples, that this approach can be used to formalize and + check non-trivial security properties. The approach has + been implemented in the SecureMOVA tool and all of the + examples presented have been checked using this tool.}, + note = {Special Issue on Model-Driven Development for Secure + Information Systems}, + publisher = pub-elsevier, + address = pub-elsevier:adr +} + +@InProceedings{ dong.ea:flexible:2008, + author = {Changyu Dong and Giovanni Russello and Naranker Dulay}, + title = {Flexible Resolution of Authorisation Conflicts in + Distributed Systems}, + booktitle = {DSOM}, + year = 2008, + pages = {95--108}, + doi = {10.1007/978-3-540-87353-2_8}, + crossref = {turck.ea:managing:2008}, + abstract = {Managing security in distributed systems requires flexible + and expressive authorisation models with support for + conflict resolution. Models need to be hierarchical but + also non-monotonic supporting both positive and negative + authorisations. In this paper, we present an approach to + resolve the authorisation conflicts that inevitably occur + in such models, with administrator specified conflict + resolution strategies (rules). Strategies can be global or + applied to specific parts of a system and dynamically + loaded for different applications. We use Courteous Logic + Programs (CLP) for the specification and enforcement of + strategies. Authorisation policies are translated into + labelled rules in CLP and prioritised. The prioritisation + is regulated by simple override rules specified or selected + by administrators. We demonstrate the capabilities of the + approach by expressing the conflict resolution strategy for + a moderately complex authorisation model that organises + subjects and objects hierarchically.} +} + +@Proceedings{ turck.ea:managing:2008, + editor = {Filip De Turck and Wolfgang Kellerer and George + Kormentzas}, + title = {Managing Large-Scale Service Deployment, 19th IFIP/IEEE + International Workshop on Distributed Systems: Operations + and Management, DSOM 2008, Samos Island, Greece, September + 22-26, 2008. Proceedings}, + booktitle = {DSOM}, + series = s-lncs, + publisher = pub-springer, + address = pub-springer:adr, + volume = 5273, + year = 2008, + isbn = {978-3-540-85999-4} +} + +@InProceedings{ russello.ea:consent-based:2008, + author = {Giovanni Russello and Changyu Dong and Naranker Dulay}, + title = {Consent-Based Workflows for Healthcare Management}, + booktitle = {9th IEEE International Workshop on Policies for + Distributed Systems and Networks (POLICY 2008), 2-4 June + 2008, Palisades, New York, USA}, + year = 2008, + publisher = {IEEE Computer Society}, + pages = {153--161}, + isbn = {978-0-7695-3133-5}, + doi = {10.1109/POLICY.2008.22}, + abstract = {n this paper, we describe a new framework for healthcare + systems where patients are able to control the disclosure + of their medical data. In our framework, the patient's + consent has a pivotal role in granting or removing access + rights to subjects accessing patient's medical data. + Depending on the context in which the access is being + executed, different consent policies can be applied. + Context is expressed in terms of workflows. The execution + of a task in a given workflow carries the necessary + information to infer whether the consent can be implicitly + retrieved or should be explicitly requested from a patient. + However, patients are always able to enforce their own + decisions and withdraw consent if necessary. Additionally, + the use of workflows enables us to apply the need-to-know + principle. Even when the patient's consent is obtained, a + subject should access medical data only if it is required + by the actual situation. For example, if the subject is + assigned to the execution of a medical diagnosis workflow + requiring access to the patient's medical record. We also + provide a complex medical case study to highlight the + design principles behind our framework. Finally, the + implementation of the framework is outlined.} +} + +@InProceedings{ mitchell-wong.ea:social:2008, + author = {Juliana Mitchell-Wong and Ryszard Kowalczyk and Bao Quoc + Vo}, + title = {Social Network Profile and Policy}, + booktitle = {9th IEEE International Workshop on Policies for + Distributed Systems and Networks (POLICY 2008), 2-4 June + 2008, Palisades, New York, USA}, + year = 2008, + publisher = {IEEE Computer Society}, + isbn = {978-0-7695-3133-5}, + pages = {207--210}, + doi = {10.1109/POLICY.2008.41}, + abstract = {n this paper, we describe a new framework for healthcare + systems where patients are able to control the disclosure + of their medical data. In our framework, the patient's + consent has a pivotal role in granting or removing access + rights to subjects accessing patient's medical data. + Depending on the context in which the access is being + executed, different consent policies can be applied. + Context is expressed in terms of workflows. The execution + of a task in a given workflow carries the necessary + information to infer whether the consent can be implicitly + retrieved or should be explicitly requested from a patient. + However, patients are always able to enforce their own + decisions and withdraw consent if necessary. Additionally, + the use of workflows enables us to apply the need-to-know + principle. Even when the patient's consent is obtained, a + subject should access medical data only if it is required + by the actual situation. For example, if the subject is + assigned to the execution of a medical diagnosis workflow + requiring access to the patient's medical record. We also + provide a complex medical case study to highlight the + design principles behind our framework. Finally, the + implementation of the framework is outlined.} +} + +@Book{ paulson:ml:1996, + author = {Lawrence C. Paulson}, + title = {\acs{ml} for the Working Programmer}, + publisher = {Cambridge Press}, + year = 1996, + acknowledgement={none} +} + +@InProceedings{ kohler.ea:proactive:2008, + title = {Pro Active Access Control for Business Process-driven + Environments}, + author = {Mathias Kohler and Andreas Schaad}, + booktitle = {Annual Computer Security Applications Conference}, + year = 2008 +} + +@InProceedings{ dewin:importance:2002, + author = {Bart De Win and Frank Piessens and Wouter Joosen and Tine + Verhanneman}, + title = {On the importance of the separation-of-concerns principle + in secure software engineering}, + booktitle = {ACSA Workshop on the Application of Engineering Principles + to System Security Design - Final Report (Serban, C., + ed.)}, + year = 2003, + pages = {1--10} +} + +@InProceedings{ priebe:towards:2000, + author = {Torsten Priebe and G\"{u}nther Pernul}, + title = {Towards \textsc{olap} security design --- survey and + research issues}, + booktitle = {DOLAP '00: Proceedings of the 3rd ACM international + workshop on Data warehousing and OLAP}, + year = 2000, + isbn = {1-58113-323-5}, + pages = {33--40}, + location = {McLean, Virginia, United States}, + doi = {10.1145/355068.355313}, + publisher = {ACM}, + address = {New York, NY, USA} +} + +@InProceedings{ atluri:supporting:2005, + author = {Vijayalakshmi Atluri and Janice Warner}, + title = {Supporting conditional delegation in secure workflow + management systems}, + booktitle = PROC # { the tenth \acs{acm} symposium on Access + control models and technologies (\acs{sacmat})}, + year = 2005, + isbn = {1-59593-045-0}, + pages = {49--58}, + location = {Stockholm, Sweden}, + doi = {10.1145/1063979.1063990}, + publisher = pub-acm, + address = pub-acm:adr +} + +@InProceedings{ dimmock:using:2004, + author = {Nathan Dimmock and Andr{\'a} Belokosztolszki and David + Eyers and Jean Bacon and Ken Moody}, + title = {Using trust and risk in role-based access control + policies}, + booktitle = PROC # { the ninth ACM symposium on Access control + models and technologies (\acs{sacmat})}, + year = 2004, + isbn = {1-58113-872-5}, + pages = {156--162}, + location = {Yorktown Heights, New York, USA}, + doi = {10.1145/990036.990062}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {Emerging trust and risk management systems provide a + framework for principals to determine whether they will + exchange resources, without requiring a complete definition + of their credentials and intentions. Most distributed + access control architectures have far more rigid policy + rules, yet in many respects aim to solve a similar problem. + This paper elucidates the similarities between trust + management and distributed access control systems by + demonstrating how the OASIS access control system and its + role-based policy language can be extended to make + decisions on the basis of trust and risk analyses rather + than on the basis of credentials alone. We apply our new + model to the prototypical example of a file storage and + publication service for the Grid, and test it using our + Prolog-based OASIS implementation.} +} + +@Article{ barnett.ea:verification:2004, + author = {Michael Barnett and Robert DeLine and Manuel F{\"a}hndrich + and K. Rustan M. Leino and Wolfram Schulte}, + title = {Verification of Object-Oriented Programs with Invariants}, + journal = {Journal of Object Technology}, + volume = 3, + number = 6, + year = 2004, + pages = {27--56}, + abstract = {An object invariant defines what it means for an object's + data to be in a consistent state. Object invariants are + central to the design and correctness of object-oriented + programs. This paper defines a programming methodology for + using object invariants. The methodology, which enriches a + program's state space to express when each object invariant + holds, deals with owned object components, ownership + transfer, and subclassing, and is expressive enough to + allow many interesting object-oriented programs to be + specified and verified. Lending itself to sound modular + verification, the methodology also provides a solution to + the problem of determining what state a method is allowed + to modify. }, + url = {http://www.jot.fm/issues/issue_2004_06/article2/article2.pdf} + +} + +@Article{ harms.ea:copying:1991, + author = {Douglas E. Harms and Bruce W. Weide}, + title = {Copying and Swapping: Influences on the Design of Reusable + Software Components}, + journal = j-tse, + volume = 17, + number = 5, + year = 1991, + pages = {424--435}, + doi = {10.1109/32.90445 }, + abstract = {The authors argue that a simple alternative to copying as + a data movement primitive-swapping (exchanging) the values + of two variables-has potentially significant advantages in + the context of the design of generic reusable software + components. Specifically, the authors claim that generic + module designs based on a swapping style are superior to + designs based on copying, both in terms of execution-time + efficiency and with respect to the likelihood of + correctness of client programs and module implementations. + Furthermore, designs based on swapping are more reusable + than traditional designs. Specific arguments and examples + to support these positions are presented}, + publisher = pub-ieee, + address = pub-ieee:adr +} + +@InProceedings{ albano.ea:relationship:1991, + author = {Antonio Albano and Giorgio Ghelli and Renzo Orsini}, + title = {A Relationship Mechanism for a Strongly Typed + Object-Oriented Database Programming Language}, + booktitle = {VLDB}, + year = 1991, + pages = {565--575}, + crossref = {lohman.ea:17th:1991} +} + +@Proceedings{ lohman.ea:17th:1991, + editor = {Guy M. Lohman and Am\'{\i}lcar Sernadas and Rafael Camps}, + title = {17th International Conference on Very Large Data Bases, + September 3-6, 1991, Barcelona, Catalonia, Spain, + Proceedings}, + publisher = {Morgan Kaufmann}, + year = 1991, + isbn = {1-55860-150-3} +} + +@InProceedings{ ernst.ea:predicate:1998, + author = {Michael D. Ernst and Craig S. Kaplan and Craig Chambers}, + title = {Predicate Dispatching: A Unified Theory of Dispatch}, + booktitle = {ECOOP}, + year = 1998, + pages = {186--211}, + doi = {10.1007/BFb0054092}, + abstract = {Predicate dispatching generalizes previous method dispatch + mechanisms by permitting arbitrary predicates to control + method applicability and by using logical implication + between predicates as the overriding relationship. The + method selected to handle a message send can depend not + just on the classes of the arguments, as in ordinary + object-oriented dispatch, but also on the classes of + subcomponents, on an argument's state, and on relationships + between objects. This simple mechanism subsumes and extends + object-oriented single and multiple dispatch, ML-style + pattern matching, predicate classes, and classifiers, which + can all be regarded as syntactic sugar for predicate + dispatching. This paper introduces predicate dispatching, + gives motivating examples, and presents its static and + dynamic semantics. An implementation of predicate + dispatching is available.}, + crossref = {jul:eccop98:1998} +} + +@Proceedings{ jul:eccop98:1998, + editor = {Eric Jul}, + title = {ECCOP'98 - Object-Oriented Programming, 12th European + Conference, Brussels, Belgium, July 20-24, 1998, + Proceedings}, + booktitle = {ECOOP}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 1445, + year = 1998, + isbn = {3-540-64737-6} +} + +@Misc{ garbani:future:2009, + author = {Jean-Pierre Garbani}, + title = {Future Trends In The Enterprise Software Market}, + howpublished = {http://www.forrester.com/Research/Document/Excerpt/0,7211,53493,00.html} + , + month = mar # {~9}, + year = 2009, + publisher = {Forrester Research, Inc.}, + address = {Cambridge, USA}, + abstract = {Hardware, software, and people are the three basic + ingredients of enterprise business technology. They provide + the enterprise with an economic advantage through automated + and improved business processes, increased employee + productivity, and more accurate and precise information. + The relationship between these three components has evolved + over time: Initially, hardware reigned supreme; software + was a mere adjunct and free to the mainframe buyer. + Decreasing hardware costs then led to software + "unbundling." In the present era of information technology, + hardware's ever-decreasing costs make it an enabler of + software functions. In the business technology (BT) era, we + predict that managing the third part of the equation -- + people -- will emerge as the dominant focus. As software + applications become business services, the cost of human + resources producing, operating, and managing software will + soon be prohibitive and the new focal point. In this + regard, the current economic downturn, if it persists, may + prove to be a driver that accelerates the shift toward the + BT era.} +} + +@Article{ klein:operating:2009, + author = {Gerwin Klein}, + title = {Operating System Verification --- An Overview}, + journal = {S\={a}dhan\={a}}, + publisher = pub-springer, + year = 2009, + volume = 34, + number = 1, + month = feb, + pages = {27--69}, + abstract = {This paper gives a high-level introduction to the topic of + formal, interactive, machine-checked software verification + in general, and the verification of operating systems code + in particular. We survey the state of the art, the + advantages and limitations of machine-checked code proofs, + and describe two specific ongoing larger-scale verification + projects in more detail.} +} + +@Article{ edwards.ea:resolve:1994, + bibkey = {edwards.ea:resolve:1994}, + author = {Stephen H. Edwards and Wayne D. Heym and Timothy J. Long + and Murali Sitaramanand Bruce W. Weide}, + title = {Part II: specifying components in {RESOLVE}}, + journal = {SIGSOFT Softw. Eng. Notes}, + volume = 19, + number = 4, + year = 1994, + issn = {0163-5948}, + pages = {29--39}, + doi = {10.1145/190679.190682}, + publisher = pub-acm, + address = pub-acm:adr +} + +@PhDThesis{ kassios:theory:2006, + author = {Ioannis T. Kassios}, + title = {A Theory of Object Oriented Refinement}, + school = {University of Toronto}, + abstract = {This thesis introduces a formal theory of object oriented + refinement. The formal design of the theory is based on the + design principles of unification and decoupling, which we + believe have not been adequately used in other object + oriented refinement theories. + + Thanks to the use of these principles, the semantics of the + theory is mathematically simpler than other approaches: the + formalization of most features uses very primitive + mathematical entities. Furthermore, the constructs of the + theory are more general than other approaches. There are + specification constructs more general than classes. + Features that are typically coupled with classes, like + reuse and polymorphism, now apply to these more general + specifications. Finally, our solution to the frame problem + is the only modular approach that we know of that does not + impose any aliasing control policy. + + To demonstrate that the extra generality offers real + advantages to the specifier, we use the theory in some + specification examples that would be impossible with other + approaches. These examples, mainly inspired by Design + Patterns, represent realistic and common software design + situations.}, + year = 2006 +} + +@TechReport{ dewar:setl:1979, + author = {Robert B. K. Dewar}, + title = {The {SETL} Programming Language}, + year = 1979 +} + +@InBook{ chun.ea:risk-based:2008, + author = {Soon Ae Chun and Vijay Atluri}, + editor = {Bhargab B. Bhattacharya and Susmita Sur-Kolay and Subhas + C. Nandy and Aditya Bagchi}, + booktitle = {Algorithms, Architecture and Information Systems + Security}, + title = {Risk-based Access Control for Personal Data Services}, + publisher = {World Scientific Press}, + year = 2008, + volume = 3, + series = {Statistical Science and Interdisciplinary Research}, + isbn = 9789812836236 +} + +@Unpublished{ clark.ea:survey:1997, + author = {John Clark and Jeremy Jacob}, + title = {A Survey of Authentication Protocol: Literature: Version + 1.0}, + year = 1997 +} + +@Unpublished{ dierks.ea:tls:1999, + author = {T. Dierks and C. Allen}, + title = {The TLS Protocol Version 1.0}, + year = 1999, + publisher = {RFC Editor}, + address = {United States}, + note = {RFC 2246} +} + +@InProceedings{ fontaine.ea:expressiveness:2006, + author = {Pascal Fontaine and Jean-Yves Marion and Stephan Merz and + Leonor Prensa Nieto and Alwen Fernanto Tiu}, + title = {Expressiveness + Automation + Soundness: Towards Combining + SMT Solvers and Interactive Proof Assistants}, + booktitle = {TACAS}, + year = 2006, + pages = {167--181}, + doi = {10.1007/11691372_11}, + crossref = {hermanns.ea:tools:2006} +} + +@Proceedings{ hermanns.ea:tools:2006, + editor = {Holger Hermanns and Jens Palsberg}, + title = {Tools and Algorithms for the Construction and Analysis of + Systems, 12th International Conference, TACAS 2006 Held as + Part of the Joint European Conferences on Theory and + Practice of Software, ETAPS 2006, Vienna, Austria, March 25 + - April 2, 2006, Proceedings}, + booktitle = {TACAS}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 3920, + year = 2006, + isbn = {3-540-33056-9} +} + +@InProceedings{ amjad:lcf-style:2008, + author = {Hasan Amjad}, + title = {LCF-Style Propositional Simplification with BDDs and SAT + Solvers}, + booktitle = {TPHOLs}, + year = 2008, + pages = {55--70}, + doi = {10.1007/978-3-540-71067-7_9}, + crossref = {mohamed.ea:theorem:2008} +} + +@Proceedings{ mohamed.ea:theorem:2008, + editor = {Otmane A\"{\i}t Mohamed and C{\'e}sar Mu{\~n}oz and + Sofi{\`e}ne Tahar}, + title = {Theorem Proving in Higher Order Logics, 21st International + Conference, TPHOLs 2008, Montreal, Canada, August 18-21, + 2008. Proceedings}, + booktitle = {TPHOLs}, + publisher = pub-springer, + address = pub-springer:adr, + volume = 5170, + series = s-lncs, + year = 2008, + isbn = {978-3-540-71065-3} +} + +@Article{ weber:integrating:2006, + author = {Tjark Weber}, + title = {Integrating a {SAT} Solver with an {LCF}-style Theorem + Prover}, + editor = {Alessandro Armando and Alessandro Cimatti}, + journal = j-entcs, + month = jan, + year = 2006, + publisher = pub-elsevier, + address = pub-elsevier:adr, + pages = {67--78}, + doi = {10.1016/j.entcs.2005.12.007}, + issn = {1571-0661}, + volume = 144, + number = 2, + note = PROC # { the Third Workshop on Pragmatics of + Decision Procedures in Automated Reasoning (PDPAR 2005)}, + clearance = {unclassified}, + abstract = {This paper describes the integration of a leading SAT + solver with Isabelle/HOL, a popular interactive theorem + prover. The SAT solver generates resolution-style proofs + for (instances of) propositional tautologies. These proofs + are verified by the theorem prover. The presented approach + significantly improves Isabelle's performance on + propositional problems, and furthermore exhibits + counterexamples for unprovable conjectures.} +} + +@Article{ weber.ea:efficiently:2009, + title = {Efficiently checking propositional refutations in HOL + theorem provers}, + journal = {Journal of Applied Logic}, + volume = 7, + number = 1, + pages = {26 -- 40}, + year = 2009, + note = {Special Issue: Empirically Successful Computerized + Reasoning}, + issn = {1570-8683}, + doi = {10.1016/j.jal.2007.07.003}, + author = {Tjark Weber and Hasan Amjad}, + abstract = {This paper describes the integration of zChaff and + MiniSat, currently two leading SAT solvers, with Higher + Order Logic (HOL) theorem provers. Both SAT solvers + generate resolution-style proofs for (instances of) + propositional tautologies. These proofs are verified by the + theorem provers. The presented approach significantly + improves the provers' performance on propositional + problems, and exhibits counterexamples for unprovable + conjectures. It is also shown that LCF-style theorem + provers can serve as viable proof checkers even for large + SAT problems. An efficient representation of the + propositional problem in the theorem prover turns out to be + crucial; several possible solutions are discussed.} +} + +@Article{ wendling:german:2009, + title = {The German {eHealth} programme}, + journal = {Card Technology Today}, + volume = 21, + number = 1, + pages = {10--11}, + year = 2009, + issn = {0965-2590}, + doi = {10.1016/S0965-2590(09)70018-0}, + author = {Dietmar Wendling}, + abstract = {Germany was one of the first countries in the world to use + smart cards for healthcare. Now it is at the starting gate + to roll out a new generation of cards. Dietmar Wendling, + vice president of the eGovernment market sector at SCM + Microsystems reports.} +} + +@Article{ meng.ea:translating:2008, + author = {Jia Meng and Lawrence C. Paulson}, + title = {Translating Higher-Order Clauses to First-Order Clauses}, + journal = j-jar, + volume = 40, + number = 1, + year = 2008, + pages = {35--60}, + doi = {10.1007/s10817-007-9085-y} +} + +@InProceedings{ paulson.ea:source-level:2007, + author = {Lawrence C. Paulson and Kong Woei Susanto}, + title = {Source-Level Proof Reconstruction for Interactive Theorem + Proving}, + booktitle = {TPHOLs}, + year = 2007, + pages = {232--245}, + doi = {10.1007/978-3-540-74591-4_18}, + crossref = {schneider.ea:theorem:2007} +} + +@Proceedings{ schneider.ea:theorem:2007, + editor = {Klaus Schneider and Jens Brandt}, + title = {Theorem Proving in Higher Order Logics, 20th International + Conference, TPHOLs 2007, Kaiserslautern, Germany, September + 10-13, 2007, Proceedings}, + booktitle = {TPHOLs}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 4732, + year = 2007, + isbn = {978-3-540-74590-7} +} + +@Article{ meng.ea:automation:2006, + author = {Jia Meng and Claire Quigley and Lawrence C. Paulson}, + title = {Automation for interactive proof: First prototype}, + journal = {Inf. Comput.}, + volume = 204, + number = 10, + year = 2006, + pages = {1575--1596}, + doi = {10.1016/j.ic.2005.05.010} +} + +@InProceedings{ erkok.ea:using:2008, + location = {Princeton, New Jersey, USA}, + author = {Levent Erk{\"o}k and John Matthews}, + booktitle = {Automated Formal Methods (AFM'08)}, + title = {Using Yices as an Automated Solver in Isabelle/{HOL}}, + year = 2008 +} + +@Article{ jurjens.ea:model-based:2008, + author = {Jan J{\"u}rjens and Rumm, R.}, + title = {Model-based security analysis of the German health card + architecture.}, + journal = {Methods Inf Med}, + year = 2008, + volume = 47, + number = 5, + pages = {409--416}, + keywords = {Patient Identification Systems}, + abstract = {OBJECTIVES: Health-care information systems are + particularly security-critical. In order to make these + applications secure, the security analysis has to be an + integral part of the system design and IT management + process for such systems. METHODS: This work presents the + experiences and results from the security analysis of the + system architecture of the German Health Card, by making + use of an approach to model-based security engineering that + is based on the UML extension UMLsec. The focus lies on the + security mechanisms and security policies of the + smart-card-based architecture which were analyzed using the + UMLsec method and tools. RESULTS: Main results of the paper + include a report on the employment of the UMLsec method in + an industrial health information systems context as well as + indications of its benefits and limitations. In particular, + two potential security weaknesses were detected and + countermeasures discussed. CONCLUSIONS: The results + indicate that it can be feasible to apply a model-based + security analysis using UMLsec to an industrial health + information system like the German Health Card + architecture, and that doing so can have concrete benefits + (such as discovering potential weaknesses, and an increased + confidence that no further vulnerabilities of the kind that + were considered are present).}, + issn = {0026-1270} +} + +@InProceedings{ miseldine:automated:2008, + author = {Philip Miseldine}, + title = {Automated {XACML} policy reconfiguration for evaluation + optimisation}, + booktitle = {SESS}, + year = 2008, + pages = {1--8}, + doi = {10.1145/1370905.1370906}, + crossref = {win.ea:proceedings:2008}, + abstract = {We present a programmatic approach to the optimisation of + XACML policies that specifies how a set of access control + rules should be best represented for optimised evaluation. + The work assumes no changes to the current XACML + specification and methods of interpretation shall be made, + so that those who consume XACML are unaffected + structurally, and those that generate XACML can provide + optimised output. Discussion regarding the flexibility of + the XACML specification to describe the same access rules + with different policy configurations is presented, and is + used to formulate a comprehensive analysis of the + evaluation costs the possible policy configurations will + produce. This leads to the specification of methods that + can be employed to produce optimal forms of policy + description. These are implemented and evaluated to show + the benefits of the approach proposed.} +} + +@Proceedings{ win.ea:proceedings:2008, + editor = {Bart De Win and Seok-Won Lee and Mattia Monga}, + title = PROC # { the Fourth International Workshop on + Software Engineering for Secure Systems, SESS 2008, + Leipzig, Germany, May 17-18, 2008}, + booktitle = {SESS}, + publisher = {ACM}, + year = 2008, + isbn = {978-1-60558-042-5} +} + +@InProceedings{ liu.ea:firewall:2008, + author = {Alex X. Liu and Eric Torng and Chad Meiners}, + title = {Firewall Compressor: An Algorithm for Minimizing Firewall + Policies}, + booktitle = PROC # { the 27th Annual IEEE Conference on Computer + Communications (Infocom)}, + year = 2008, + address = {Phoenix, Arizona}, + month = {April} +} + +@InProceedings{ liu.ea:xengine:2008, + author = {Alex X. Liu and Fei Chen and JeeHyun Hwang and Tao Xie}, + title = {{XEngine}: A Fast and Scalable {XACML} Policy Evaluation + Engine}, + booktitle = PROC # { the International Conference on Measurement + and Modeling of Computer Systems (Sigmetrics)}, + year = 2008, + address = {Annapolis, Maryland}, + month = {June} +} + +@InProceedings{ goubault-larrecq:towards:2008, + address = {Pittsburgh, PA, USA}, + author = {Goubault{-}Larrecq, Jean}, + booktitle = {{P}roceedings of the 21st {IEEE} {C}omputer {S}ecurity + {F}oundations {S}ymposium ({CSF}'08)}, + doi = {10.1109/CSF.2008.21}, + month = jun, + pages = {224--238}, + publisher = {{IEEE} Computer Society Press}, + title = {Towards Producing Formally Checkable Security Proofs, + Automatically}, + year = 2008 +} + +@InProceedings{ weidenbach.ea:spass:2007, + author = {Christoph Weidenbach and Renate A. Schmidt and Thomas + Hillenbrand and Rostislav Rusev and Dalibor Topic}, + title = {System Description: Spass Version 3.0}, + booktitle = {CADE}, + year = 2007, + pages = {514--520}, + doi = {10.1007/978-3-540-73595-3_38}, + crossref = {pfenning:automated:2007} +} + +@Proceedings{ pfenning:automated:2007, + editor = {Frank Pfenning}, + title = {Automated Deduction - CADE-21, 21st International + Conference on Automated Deduction, Bremen, Germany, July + 17-20, 2007, Proceedings}, + booktitle = {CADE}, + series = s-lncs, + publisher = pub-springer, + address = pub-springer:adr, + volume = 4603, + year = 2007, + isbn = {978-3-540-73594-6} +} + +@Article{ paulson:tls:1999, + author = {Lawrence C. Paulson}, + title = {Inductive Analysis of the Internet Protocol {TLS}}, + journal = {ACM Trans. Inf. Syst. Secur.}, + volume = 2, + number = 3, + year = 1999, + pages = {332--351}, + doi = {10.1145/322510.322530} +} + +@Article{ harman.ea:testability:2004, + author = {Mark Harman and Lin Hu and Rob Hierons and Joachim Wegener + and Harmen Sthamer and Andr{\'e} Baresel and Marc Roper}, + title = {Testability Transformation}, + journal = {IEEE Trans. Softw. Eng.}, + volume = 30, + number = 1, + year = 2004, + issn = {0098-5589}, + pages = {3--16}, + doi = {10.1109/TSE.2004.1265732}, + publisher = {IEEE Press}, + address = {Piscataway, NJ, USA} +} + +@Article{ dssouli.ea:communications:1999, + title = {Communications software design for testability: + specification transformations and testability measures}, + journal = {Information and Software Technology}, + volume = 41, + number = {11-12}, + pages = {729--743}, + year = 1999, + issn = {0950-5849}, + doi = {10.1016/S0950-5849(99)00033-6}, + url = {http://www.sciencedirect.com/science/article/B6V0B-3X3TD3J-4/2/0efca94003ffe88571f8aa2d346a1289} + , + author = {R. Dssouli and K. Karoui and K. Saleh and O. Cherkaoui}, + keywords = {Testing} +} + +@Article{ baker:equal:1993, + author = {Henry G. Baker}, + title = {Equal rights for functional objects or, the more things + change, the more they are the same}, + journal = {OOPS Messenger}, + volume = 4, + number = 4, + year = 1993, + pages = {2--27}, + abstract = {We argue that intensional object identity in + object-oriented programming languages and databases is best + defined operationally by side-effect semantics. A corollary + is that "functional" objects have extensional semantics. + This model of object identity, which is analogous to the + normal forms of relational algebra, provides cleaner + semantics for the value-transmission operations and + built-in primitive equality predicate of a programming + language, and eliminates the confusion surrounding + "call-by-value" and "call-by-reference" as well as the + confusion of multiple equality predicates.Implementation + issues are discussed, and this model is shown to have + significant performance advantages in persistent, parallel, + distributed and multilingual processing environments. This + model also provides insight into the "type equivalence" + problem of Algol-68, Pascal and Ada.} +} + +@Article{ hierons.ea:branch-coverage:2005, + author = {Robert M. Hierons and Mark Harman and Chris Fox}, + title = {Branch-Coverage Testability Transformation for + Unstructured Programs}, + journal = {Comput. J.}, + volume = 48, + number = 4, + year = 2005, + pages = {421--436}, + doi = {10.1093/comjnl/bxh093}, + abstract = {Test data generation by hand is a tedious, expensive and + error-prone activity, yet testing is a vital part of the + development process. Several techniques have been proposed + to automate the generation of test data, but all of these + are hindered by the presence of unstructured control flow. + This paper addresses the problem using testability + transformation. Testability transformation does not + preserve the traditional meaning of the program, rather it + deals with preserving test-adequate sets of input data. + This requires new equivalence relations which, in turn, + entail novel proof obligations. The paper illustrates this + using the branch coverage adequacy criterion and develops a + branch adequacy equivalence relation and a testability + transformation for restructuring. It then presents a proof + that the transformation preserves branch adequacy.} +} + +@InProceedings{ harman:open:2008, + title = {Open Problems in Testability Transformation}, + author = {Harman, M.}, + booktitle = {Software Testing Verification and Validation Workshop, + 2008. ICSTW '08. IEEE International Conference on}, + year = 2008, + month = {April}, + pages = {196--209}, + keywords = {data analysis, program testingsearch-based test data + generation, test adequacy criterion, testability + transformation}, + doi = {10.1109/ICSTW.2008.30}, + issn = {978-0-7695-3388-9}, + abstract = {Testability transformation (tetra) seeks to transform a + program in order to make it easier to generate test data. + The test data is generated from the transformed version of + the program, but it is applied to the original version for + testing purposes. A transformation is a testability + transformation with respect to a test adequacy criterion if + all test data that is adequate for the transformed program + is also adequate for the untransformed program. Testability + transformation has been shown to be effective at improving + coverage for search based test data generation. However, + there are many interesting open problems. This paper + presents some of these open problems. The aim is to show + how testability transformation can be applied to a wide + range of testing scenarios.} +} + +@InProceedings{ harman.ea:testability:2008, + author = {Mark Harman and Andr{\'e} Baresel and David Binkley and + Robert M. Hierons and Lin Hu and Bogdan Korel and Phil + McMinn and Marc Roper}, + title = {Testability Transformation - Program Transformation to + Improve Testability}, + booktitle = {Formal Methods and Testing}, + year = 2008, + pages = {320--344}, + doi = {10.1007/978-3-540-78917-8_11}, + crossref = {hierons.ea:formal:2008} +} + +@InProceedings{ veanes.ea:model-based:2008, + author = {Margus Veanes and Colin Campbell and Wolfgang Grieskamp + and Wolfram Schulte and Nikolai Tillmann and Lev + Nachmanson}, + title = {Model-Based Testing of Object-Oriented Reactive Systems + with Spec Explorer}, + booktitle = {Formal Methods and Testing}, + year = 2008, + pages = {39--76}, + doi = {10.1007/978-3-540-78917-8_2}, + abstract = {}, + crossref = {hierons.ea:formal:2008} +} + +@Proceedings{ hierons.ea:formal:2008, + editor = {Robert M. Hierons and Jonathan P. Bowen and Mark Harman}, + title = {Formal Methods and Testing, An Outcome of the FORTEST + Network, Revised Selected Papers}, + booktitle = {Formal Methods and Testing}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 4949, + year = 2008, + isbn = {978-3-540-78916-1} +} + +@Booklet{ omg:uml-infrastructure:2009, + bibkey = {omg:uml-infrastructure:2009}, + key = omg, + publisher = omg, + language = {USenglish}, + note = {Available as \acs{omg} document + \href{http://www.omg.org/cgi-bin/doc?formal/2009-02-04} + {formal/2009-02-04}}, + keywords = {\acs{uml}}, + topic = {formalism}, + public = {yes}, + title = {\acs{uml} 2.2 Infrastructure Specification}, + year = 2009 +} + +@InProceedings{ pirretti.ea:secure:2006, + author = {Matthew Pirretti and Patrick Traynor and Patrick McDaniel + and Brent Waters}, + title = {Secure attribute-based systems}, + booktitle = PROC # {ACM conference on + Computer and communications security (CCS)}, + year = 2006, + isbn = {1-59593-518-5}, + pages = {99--112}, + location = {Alexandria, Virginia, USA}, + doi = {10.1145/1180405.1180419}, + address = pub-acm:adr, + publisher = pub-acm, + abstract = {Attributes define, classify, or annotate the datum to + which they are assigned. However, traditional attribute + architectures and cryptosystems are ill-equipped to provide + security in the face of diverse access requirements and + environments. In this paper, we introduce a novel secure + information management architecture based on emerging + attribute-based encryption (ABE) primitives. A policy + system that meets the needs of complex policies is defined + and illustrated. Based on the needs of those policies, we + propose cryptographic optimizations that vastly improve + enforcement efficiency. We further explore the use of such + policies in two example applications: a HIPAA compliant + distributed file system and a social network. A performance + analysis of our ABE system and example applications + demonstrates the ability to reduce cryptographic costs by + as much as 98\% over previously proposed constructions. + Through this, we demonstrate that our attribute system is + an efficient solution for securely managing information in + large, loosely-coupled, distributed systems.} +} + +@Article{ milicev:semantics:2007, + bibkey = {milicev:semantics:2007}, + title = {On the Semantics of Associations and Association Ends in + UML}, + author = {Dragan Milicev}, + journal = {IEEE Transactions on Software Engineering}, + year = 2007, + month = apr, + volume = 33, + number = 4, + pages = {238--251}, + keywords = {Unified Modeling Language, entity-relationship modelling, + formal specification, object-oriented programming, + programming language semanticsUML, Unified Modeling + Language, association end, conceptual modeling, formal + semantics, formal specification, intentional + interpretation, object-oriented modeling}, + doi = {10.1109/TSE.2007.37}, + issn = {0098-5589} +} + +@InProceedings{ bierman.ea:first-class:2005, + author = {Gavin M. Bierman and Alisdair Wren}, + title = {First-Class Relationships in an Object-Oriented Language}, + booktitle = {ECOOP}, + year = 2005, + pages = {262--286}, + doi = {10.1007/11531142_12}, + crossref = {black:ecoop:2005} +} + +@Proceedings{ black:ecoop:2005, + editor = {Andrew P. Black}, + title = {ECOOP 2005 - Object-Oriented Programming, 19th European + Conference, Glasgow, UK, July 25-29, 2005, Proceedings}, + booktitle = {ECOOP}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 3586, + year = 2005, + isbn = {3-540-27992-X} +} + +@Article{ shafiq.ea:secure:2005, + title = {Secure interoperation in a multidomain environment + employing RBAC policies}, + author = {Basit Shafiq and James B.D. Joshi and Elisa Bertino and + Arif Ghafoor}, + journal = j-tkde, + year = 2005, + month = nov, + volume = 17, + number = 11, + pages = {1557--1577}, + keywords = {Internet, authorisation, integer programming, open systems + Internet-based enterprise, heterogeneous role-based access + control, integer programming, multidomain application + environment, optimality criterion, policy integration + framework, secure interoperation}, + doi = {10.1109/TKDE.2005.185}, + issn = {1041-4347} +} + +@Article{ aedo.ea:rbac:2006, + volume = 11, + number = 4, + month = dec, + year = 2006, + title = {An {RBAC} Model-Based Approach to Specify the Access + Policies of Web-Based Emergency Information Systems}, + author = {Ignacio Aedo and Paloma D{\'i}az and Daniel Sanz}, + journal = {The International Journal of Intelligent Control and + Systems}, + page = {272--283}, + abstract = {One of the main design challenges of any Web-based + Emergency Management Information System (WEMIS) is the + diversity of users and responsibilities to be considered. + Modelling the access capabilities of different communities + of users is a most relevant concern for which the RBAC + (Role-Based Access Control) paradigm provides flexible and + powerful constructs. In this paper we describe how we used + an RBAC model-based approach to specify at different levels + of abstraction the access policy of a specific WEMIS called + ARCE (Aplicaci{\`o}n en Red para Casos de Emergencia). This + approach made possible to face access modelling at earlier + development stages, so that stakeholders got involved in + analytical and empirical evaluations to test the + correctness and completeness of the access policy. + Moreover, since the RBAC meta-model is embedded into a web + engineering method, we put in practice a holistic process + addressing different design perspectives in an integrated + way. } +} + +@InProceedings{ phillips.ea:information:2002, + author = {Charles E. Phillips, Jr. and T.C. Ting and Steven A. + Demurjian}, + title = {Information sharing and security in dynamic coalitions}, + booktitle = {SACMAT '02: Proceedings of the seventh ACM symposium on + Access control models and technologies}, + year = 2002, + isbn = {1-58113-496-7}, + pages = {87--96}, + location = {Monterey, California, USA}, + doi = {10.1145/507711.507726}, + address = pub-acm:adr, + publisher = pub-acm +} + +@InProceedings{ martino.ea:multi-domain:2008, + title = {Multi-domain and privacy-aware role based access control + in eHealth}, + author = {Lorenzo D. Martino and Qun Ni and Dan Lin and Elisa + Bertino}, + booktitle = {Second International Conference on Pervasive Computing + Technologies for Healthcare (PervasiveHealth 2008)}, + year = 2008, + month = {30 2008-Feb. 1}, + pages = {131--134}, + keywords = {authorisation, data privacy, health care, medical + information systemseHealth, electronic medical/health + records, healthcare professionals, multidomain + privacy-aware role based access control, patient safety, + privacy preserving,}, + doi = {10.1109/PCTHEALTH.2008.4571050} +} + +@InProceedings{ kamath.ea:user-credential:2006, + author = {Ajith Kamath and Ramiro Liscano and Abdulmotaleb El + Saddik}, + title = {User-credential based role mapping in multi-domain + environment}, + booktitle = {PST '06: Proceedings of the 2006 International Conference + on Privacy, Security and Trust}, + year = 2006, + isbn = {1-59593-604-1}, + pages = {1--1}, + location = {Markham, Ontario, Canada}, + doi = {10.1145/1501434.1501507}, + address = pub-acm:adr, + publisher = pub-acm +} + +@Article{ geethakumari.ea:cross:2009, + journal = {International Journal of Computer Science \& Applications}, + title = {A Cross -- Domain Role Mapping and Authorization Framework + for {RBAC} in Grid Systems.}, + year = 2009, + volume = {VI}, + issue = {I}, + author = {G. Geethakumari and Atul Negi and V. N. Sastry}, + issn = {0972-9038} +} + +@InProceedings{ gogolla.ea:benchmark:2008, + author = {Martin Gogolla and Mirco Kuhlmann and Fabian B{\"u}ttner}, + title = {A Benchmark for \acs{ocl} Engine Accuracy, + Determinateness, and Efficiency}, + booktitle = {MoDELS}, + year = 2008, + pages = {446--459}, + doi = {10.1007/978-3-540-87875-9_32}, + crossref = {czarnecki.ea:models:2008}, + abstract = {The Object Constraint Language (OCL) is a central element + in modeling and transformation languages like UML, MOF, and + QVT. Consequently approaches for MDE (Model-Driven + Engineering) depend on OCL. However, OCL is present not + only in these areas influenced by the OMG but also in the + Eclipse Modeling Framework (EMF). Thus the quality of OCL + and its realization in tools seems to be crucial for the + success of model-driven development. Surprisingly, up to + now a benchmark for OCL to measure quality properties has + not been proposed. This paper puts forward in the first + part the concepts of a comprehensive OCL benchmark. Our + benchmark covers (A) OCL engine accuracy (e.g., for the + undefined value and the use of variables), (B) OCL engine + determinateness properties (e.g., for the collection + operations any and flatten), and (C) OCL engine efficiency + (for data type and user-defined operations). In the second + part, this paper empirically evaluates the proposed + benchmark concepts by examining a number of OCL tools. The + paper discusses several differences in handling particular + OCL language features and underspecifications in the OCL + standard.} +} + +@InProceedings{ gessenharter:mapping:2008, + author = {Dominik Gessenharter}, + title = {Mapping the {UML2} Semantics of Associations to a {Java} + Code Generation Model}, + booktitle = {MoDELS}, + year = 2008, + pages = {813--827}, + doi = {10.1007/978-3-540-87875-9_56}, + crossref = {czarnecki.ea:models:2008} +} + +@Proceedings{ czarnecki.ea:models:2008, + editor = {Krzysztof Czarnecki and Ileana Ober and Jean-Michel Bruel + and Axel Uhl and Markus V{\"o}lter}, + title = {Model Driven Engineering Languages and Systems, 11th + International Conference, MoDELS 2008, Toulouse, France, + September 28 - October 3, 2008. Proceedings}, + booktitle = {MoDELS}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 5301, + year = 2008, + isbn = {978-3-540-87874-2} +} + +@Article{ aalst.ea:workflow:2003, + author = {Wil M. P. van der Aalst and Arthur H. M. ter Hofstede and + Bartek Kiepuszewski and Alistair P. Barros}, + title = {Workflow Patterns}, + journal = {Distributed and Parallel Databases}, + volume = 14, + number = 1, + year = 2003, + pages = {5--51}, + doi = {10.1023/A:1022883727209}, + abstract = {Differences in features supported by the various + contemporary commercial workflow management systems point + to different insights of suitability and different levels + of expressive power. The challenge, which we undertake in + this paper, is to systematically address workflow + requirements, from basic to complex. Many of the more + complex requirements identified, recur quite frequently in + the analysis phases of workflow projects, however their + implementation is uncertain in current products. + Requirements for workflow languages are indicated through + workflow patterns. In this context, patterns address + business requirements in an imperative workflow style + expression, but are removed from specific workflow + languages. The paper describes a number of workflow + patterns addressing what we believe identify comprehensive + workflow functionality. These patterns provide the basis + for an in-depth comparison of a number of commercially + availablework flow management systems. As such, this paper + can be seen as the academic response to evaluations made by + prestigious consulting companies. Typically, these + evaluations hardly consider the workflow modeling language + and routing capabilities, and focus more on the purely + technical and commercial aspects.} +} + +@InProceedings{ chalin.ea:non-null:2005, + author = {Patrice Chalin and Fr\'{e}d\'{e}ric Rioux}, + title = {Non-null references by default in the {Java} modeling + language}, + booktitle = {SAVCBS '05: Proceedings of the 2005 conference on + Specification and verification of component-based systems}, + year = 2005, + isbn = {1-59593-371-9}, + pages = 9, + location = {Lisbon, Portugal}, + doi = {10.1145/1123058.1123068}, + address = pub-acm:adr, + publisher = pub-acm, + abstract = {Based on our experiences and those of our peers, we + hypothesized that in Java code, the majority of + declarations that are of reference types are meant to be + non-null. Unfortunately, the Java Modeling Language (JML), + like most interface specification and object-oriented + programming languages, assumes that such declarations are + possibly-null by default. As a consequence, developers need + to write specifications that are more verbose than + necessary in order to accurately document their module + interfaces. In practice, this results in module interfaces + being left incompletely and inaccurately specified. In this + paper we present the results of a study that confirms our + hypothesis. Hence, we propose an adaptation to JML that + preserves its language design goals and that allows + developers to specify that declarations of reference types + are to be interpreted as non-null by default. We explain + how this default is safer and results in less writing on + the part of specifiers than null-by-default. The paper also + reports on an implementation of the proposal in some of the + JML tools.} +} + +@Article{ ekman.ea:pluggable:2007, + author = {Torbj{\"o}rn Ekman and G{\"o}rel Hedin}, + title = {Pluggable checking and inferencing of nonnull types for + {Java}}, + journal = {Journal of Object Technology}, + volume = 6, + number = 9, + year = 2007, + pages = {455--475}, + ee = {http://www.jot.fm/issues/issue_2007_10/paper23/index.html} + +} + +@InProceedings{ fahndrich.ea:declaring:2003, + author = {Manuel F{\"a}hndrich and K. Rustan M. Leino}, + title = {Declaring and checking non-null types in an + object-oriented language}, + booktitle = {OOPSLA}, + year = 2003, + pages = {302--312}, + doi = {10.1145/949305.949332}, + crossref = {crocker.ea:proceedings:2003} +} + +@Proceedings{ crocker.ea:proceedings:2003, + editor = {Ron Crocker and Guy L. Steele Jr.}, + title = PROC # { the 2003 ACM SIGPLAN Conference on + Object-Oriented Programming Systems, Languages and + Applications, OOPSLA 2003, October 26-30, 2003, Anaheim, + CA, USA}, + booktitle = {OOPSLA}, + year = 2003, + isbn = {1-58113-712-5}, + address = pub-acm:adr, + publisher = pub-acm +} + +@InProceedings{ lee.ea:lightweight:2007, + author = {Hannah K. Lee and Heiko and Luedemann}, + title = {lightweight decentralized authorization model for + inter-domain collaborations}, + booktitle = {SWS '07: Proceedings of the 2007 ACM workshop on Secure + web services}, + year = 2007, + isbn = {978-1-59593-892-3}, + pages = {83--89}, + location = {Fairfax, Virginia, USA}, + doi = {10.1145/1314418.1314431}, + address = pub-acm:adr, + publisher = pub-acm +} + +@InProceedings{ freudenthal.ea:drbac:2002, + title = {{dRBAC}: distributed role-based access control for dynamic + coalition environments}, + author = {Freudenthal, E. and Pesin, T. and Port, L. and Keenan, E. + and Karamcheti, V.}, + journal = {Distributed Computing Systems, 2002. Proceedings. 22nd + International Conference on}, + year = 2002, + pages = {411--420}, + keywords = {authorisation, distributed processing PKI identities, + continuous monitoring, controlled activities, credential + discovery, credential validation, dRBAC, distributed + role-based access control, dynamic coalition environments, + graph approach, long-lived interactions, multiple + administrative domains, namespaces, policy roots, role + delegation, scalable decentralized access control + mechanism, scalable decentralized trust-management + mechanism, scalar valued attributes, third-party + delegation, transferred permissions, trust domains, trust + relationships}, + doi = {10.1109/ICDCS.2002.1022279}, + issn = {1063-6927 }, + abstract = {distributed role-based access control (dRBAC) is a + scalable, decentralized trust-management and access-control + mechanism for systems that span multiple administrative + domains. dRBAC utilizes PKI identities to define trust + domains, roles to define controlled activities, and role + delegation across domains to represent permissions to these + activities. The mapping of controlled actions to roles + enables their namespaces to serve as policy roots. dRBAC + distinguishes itself from previous approaches by providing + three features: (1) third-party delegation of roles from + outside a domain's namespace, relying upon an explicit + delegation of assignment; (2) modulation of transferred + permissions using scalar valued attributes associated with + roles; and (3) continuous monitoring of trust relationships + over long-lived interactions. The paper describes the dRBAC + model and its scalable implementation using a graph + approach to credential discovery and validation.} +} + +@Article{ liu.ea:role-based:2004, + author = {Duen-Ren Liu and Mei-Yu Wu and Shu-Teng Lee}, + title = {Role-based authorizations for workflow systems in support + of task-based separation of duty}, + journal = {Journal of Systems and Software}, + volume = 73, + number = 3, + year = 2004, + pages = {375--387}, + doi = {10.1016/S0164-1212(03)00175-4}, + abstract = {Role-based authorizations for assigning tasks of workflows + to roles/users are crucial to security management in + workflow management systems. The authorizations must + enforce separation of duty (SoD) constraints to prevent + fraud and errors. This work analyzes and defines several + duty-conflict relationships among tasks, and designs + authorization rules to enforce SoD constraints based on the + analysis. A novel authorization model that incorporates + authorization rules is then proposed to support the + planning of assigning tasks to roles/users, and the + run-time activation of tasks. Different from existing work, + the proposed authorization model considers the AND/XOR + split structures of workflows and execution dependency + among tasks to enforce separation of duties in assigning + tasks to roles/users. A prototype system is developed to + realize the effectiveness of the proposed authorization + model.} +} + +@Booklet{ nipkow.ea:isabelle-hol:2009, + title = {{Isabelle's} Logic: {HOL}}, + author = {Tobias Nipkow and Lawrence C. Paulson and Markus Wenzel}, + year = 2009, + misc = {\url{http://isabelle.in.tum.de/library/HOL/}} +} + +@InProceedings{ garson.ea:security:2008, + author = {Garson, Kathryn and Adams, Carlisle}, + title = {Security and privacy system architecture for an e-hospital + environment}, + booktitle = {IDtrust '08: Proceedings of the 7th symposium on Identity + and trust on the Internet}, + year = 2008, + isbn = {978-1-60558-066-1}, + pages = {122--130}, + location = {Gaithersburg, Maryland}, + doi = {10.1145/1373290.1373306}, + address = pub-acm:adr, + publisher = pub-acm +} + +@Article{ kambourakis.ea:pki-based:2005, + author = {G. Kambourakis and I. Maglogiannis and A. Rouskas}, + title = {PKI-based secure mobile access to electronic health + services and data}, + journal = {Technology and Health Care Journal}, + volume = 13, + number = 6, + year = 2005, + issn = {0928-7329}, + pages = {511--526}, + publisher = pub-ios, + address = pub-ios:adr, + abstract = {Recent research works examine the potential employment of + public-key cryptography schemes in e-health environments. + In such systems, where a Public Key Infrastructure (PKI) is + established beforehand, Attribute Certificates (ACs) and + public key enabled protocols like TLS, can provide the + appropriate mechanisms to effectively support + authentication, authorization and confidentiality services. + In other words, mutual trust and secure communications + between all the stakeholders, namely physicians, patients + and e-health service providers, can be successfully + established and maintained. Furthermore, as the recently + introduced mobile devices with access to computer-based + patient record systems are expanding, the need of + physicians and nurses to interact increasingly with such + systems arises. Considering public key infrastructure + requirements for mobile online health networks, this paper + discusses the potential use of Attribute Certificates (ACs) + in an anticipated trust model. Typical trust interactions + among doctors, patients and e-health providers are + presented, indicating that resourceful security mechanisms + and trust control can be obtained and implemented. The + application of attribute certificates to support medical + mobile service provision along with the utilization of the + de-facto TLS protocol to offer competent confidentiality + and authorization services is also presented and evaluated + through experimentation, using both the 802.11 WLAN and + General Packet Radio Service (GPRS) networks.} +} + +@InProceedings{ sahai.ea:fuzzy:2005, + author = {Amit Sahai and Brent Waters}, + title = {Fuzzy Identity-Based Encryption}, + year = 2005, + pages = {457--473}, + doi = {10.1007/11426639_27}, + crossref = {cramer:advances:2005}, + abstract = {We introduce a new type of Identity-Based Encryption (IBE) + scheme that we call Fuzzy Identity-Based Encryption. In + Fuzzy IBE we view an identity as set of descriptive + attributes. A Fuzzy IBE scheme allows for a private key for + an identity, ohgr, to decrypt a ciphertext encrypted with + an identity, ohgr prime, if and only if the identities ohgr + and ohgr prime are close to each other as measured by the + ldquoset overlaprdquo distance metric. A Fuzzy IBE scheme + can be applied to enable encryption using biometric inputs + as identities; the error-tolerance property of a Fuzzy IBE + scheme is precisely what allows for the use of biometric + identities, which inherently will have some noise each time + they are sampled. Additionally, we show that Fuzzy-IBE can + be used for a type of application that we term + ldquoattribute-based encryptionrdquo. In this paper we + present two constructions of Fuzzy IBE schemes. Our + constructions can be viewed as an Identity-Based Encryption + of a message under several attributes that compose a + (fuzzy) identity. Our IBE schemes are both error-tolerant + and secure against collusion attacks. Additionally, our + basic construction does not use random oracles. We prove + the security of our schemes under the Selective-ID security + model. } +} + +@Proceedings{ cramer:advances:2005, + editor = {Ronald Cramer}, + booktitle = PROC # {International Conference on the Theory and Applications of + Cryptographic Techniques (EUROCRYPT)}, + location = {Advances in Cryptology - EUROCRYPT 2005, 24th Annual + International Conference on the Theory and Applications of + Cryptographic Techniques, Aarhus, Denmark, May 22-26, 2005, + Proceedings}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 3494, + year = 2005, + isbn = {3-540-25910-4} +} + +@InProceedings{ goyal.ea:attribute-based:2006, + author = {Vipul Goyal and Omkant Pandey and Amit Sahai and Brent + Waters}, + title = {Attribute-based encryption for fine-grained access control + of encrypted data}, + booktitle = {CCS '06: Proceedings of the 13th ACM conference on + Computer and communications security}, + year = 2006, + isbn = {1-59593-518-5}, + pages = {89--98}, + location = {Alexandria, Virginia, USA}, + doi = {10.1145/1180405.1180418}, + address = pub-acm:adr, + publisher = pub-acm, + abstract = {As more sensitive data is shared and stored by third-party + sites on the Internet, there will be a need to encrypt data + stored at these sites. One drawback of encrypting data, is + that it can be selectively shared only at a coarse-grained + level (i.e., giving another party your private key). We + develop a new cryptosystem for fine-grained sharing of + encrypted data that we call Key-Policy Attribute-Based + Encryption (KP-ABE). In our cryptosystem, ciphertexts are + labeled with sets of attributes and private keys are + associated with access structures that control which + ciphertexts a user is able to decrypt. We demonstrate the + applicability of our construction to sharing of audit-log + information and broadcast encryption. Our construction + supports delegation of private keys which + subsumesHierarchical Identity-Based Encryption (HIBE).} +} + +@InProceedings{ li.ea:privacy-aware:2009, + author = {Jin Li and Kui Ren and Bo Zhu and Zhiguo Wan}, + title = {Privacy-aware Attribute-based Encryption with User + Accountability}, + booktitle = {The 12th Information Security Conference (ISC'09)}, + location = {September 7-9, 2009, Pisa}, + year = 2009, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + abstract = {As a new public key primitive, attribute-based encryption + (ABE) is envisioned to be a promising tool for implementing + fine-grained access control. To further address the concern + of user access privacy, privacy-aware ABE schemes are being + developed to achieve hidden access policy recently. For the + purpose of secure access control, there is, how- ever, + still one critical functionality missing in the existing + ABE schemes, which is user accountability. Currently, no + ABE scheme can completely prevent the problem of illegal + key sharing among users. In this paper, we tackle this + problem by firstly proposing the notion of accountable, + anonymous, and ciphertext-policy ABE (CP-A3 BE, in short) + and then giving out a concrete construction. We start by + improving the state-of-the-art of anonymous CP-ABE to + obtain shorter public parameters and ciphertext length. In + the proposed CP-A3 BE construction, user accountability can + be achieved in black-box model by embedding additional + user-specific information into the attribute private key + issued to that user, while still maintaining hidden access + policy. The proposed constructions are provably secure.} +} + +@InProceedings{ bobba.ea:pbes:2009, + author = {Rakesh Bobba and and Himanshu Khurana and Musab AlTurki + and Farhana Ashraf}, + title = {PBES: a policy based encryption system with application to + data sharing in the power grid}, + booktitle = {ASIACCS '09: Proceedings of the 4th International + Symposium on Information, Computer, and Communications + Security}, + year = 2009, + isbn = {978-1-60558-394-5}, + pages = {262--275}, + location = {Sydney, Australia}, + doi = {10.1145/1533057.1533093}, + address = pub-acm:adr, + publisher = pub-acm, + abstract = {In distributed systems users need the ability to share + sensitive content with multiple other recipients based on + their ability to satisfy arbitrary policies. One such + system is electricity grids where finegrained sensor data + sharing holds the potential for increased reliability and + efficiency. However, effective data sharing requires + technical solutions that support flexible access policies, + for example, sharing more data when the grid is unstable. + In such systems, both the messages and policies are + sensitive and, therefore, they need to kept be secret. + Furthermore, to allow for such a system to be secure and + usable in the presence of untrusted object stores and + relays it must be resilient in the presence of active + adversaries and provide efficient key management. While + several of these properties have been studied in the past + we address a new problem in the area of policy based + encryption in that we develop a solution with all of these + capabilities. We develop a Policy and Key Encapsulation + Mechanism -- Data Encapsulation Mechanism (PKEM-DEM) + encryption scheme that is a generic construction secure + against adaptive chosen ciphertext attacks and develop a + Policy Based Encryption System (PBES) using this scheme + that provides these capabilities. We provide an + implementation of PBES and measure its performance.} +} + +@InProceedings{ shanqing.ea:attribute-based:2008, + author = {Guo Shanqing and Zeng Yingpei}, + title = {Attribute-based Signature Scheme}, + doi = {10.1109/ISA.2008.111}, + booktitle = {International Conference on Information Security and + Assurance, 2008 (ISA 2008)}, + year = 2008, + pages = {509--511}, + month = apr, + address = pub-ieee:adr, + publisher = pub-ieee, + abstract = {In real life, one requires signatures from people who + satisfy certain criteria like that they should possess some + specific attributes. For example, Alice wants a document to + be signed by some employee in Bob's company. This employee + must have certain attributes such as being part of the IT + staff and at least a junior manager in the cryptography + team or a senior manager in the biometrics team. In order + to satisfy these kinds of needs, we defined a common + Attribute-based signature scheme where the signing member + has to have certain attributes or belong to a certain + group, and we also proved our scheme to be secure.} +} + +@Article{ huang.ea:aspe:2009, + title = {ASPE: attribute-based secure policy enforcement in + vehicular ad hoc networks}, + journal = {Ad Hoc Networks}, + volume = 7, + number = 8, + pages = {1526--1535}, + year = 2009, + mynote = {Privacy and Security in Wireless Sensor and Ad Hoc + Networks}, + issn = {1570-8705}, + doi = {10.1016/j.adhoc.2009.04.011}, + author = {Dijiang Huang and Mayank Verma}, + keywords = {Security, Vehicular networks, Secure group communications, + Key management, Attribute based encryption}, + publisher = pub-elsevier, + address = pub-elsevier:adr, + abstract = {Vehicular ad hoc networks (VANETs) are usually operated + among vehicles moving at high speeds, and thus their + communication relations can be changed frequently. In such + a highly dynamic environment, establishing trust among + vehicles is difficult. To solve this problem, we propose a + flexible, secure and decentralized attribute based secure + key management framework for VANETs. Our solution is based + on attribute based encryption (ABE) to construct an + attribute based security policy enforcement (ASPE) + framework. ASPE considers various road situations as + attributes. These attributes are used as encryption keys to + secure the transmitted data. ASPE is flexible in that it + can dynamically change encryption keys depending on the + VANET situations. At the same time, ASPE naturally + incorporates data access control policies on the + transmitted data. ASPE provides an integrated solution to + involve data access control, key management, security + policy enforcement, and secure group formation in highly + dynamic vehicular communication environments. Our + performance evaluations show that ASPE is efficient and it + can handle large amount of data encryption/decryption flows + in VANETs.} +} + +@InProceedings{ weber:securing:2009, + author = {Stefan G. Weber}, + title = {Securing First Response Coordination With Dynamic + Attribute-Based Encryption}, + booktitle = {World Congress on Privacy, Security, Trust and the + Management of e-Business (CONGRESS)}, + year = 2009, + pages = {58--69}, + isbn = {978-0-7695-3805-1}, + address = pub-ieee:adr, + publisher = pub-ieee, + abstract = {Every minute saved in emergency management processes can + save additional lives of affected victims. Therefore, an + effective coordination of the incident reactions of mobile + first responders is very important, especially in the face + of rapidly changing situations of large scale disasters. + However, tactical communication and messaging between the + headquarter and mobile first responders, initiated for + coordination purposes, has to meet a strong security + requirements: it must preserve confidentiality in order to + prevent malicious third parties from disrupting the + reactions. This paper presents concepts to support the + secure coordination of mobile first responders by providing + means for secure ubiquitous tactical communication. Our + concept harnesses ciphertext-policy attribute-based + encryption (CP-ABE) techniques. We extend current CP-ABE + proposals by additionally taking into account dynamic + factors: our proposed system is able to handle dynamic + attributes, like current status of duty and location of + mobile first responders, in a secure fashion, in order to + support flexible specification of receiver groups of + tactical messages, while end-to-end encryption in the + messaging process is still satisfied.} +} + +@InProceedings{ cardoso:approaches:2006, + author = {Jorge Cardoso}, + title = {Approaches to Compute Workflow Complexity}, + booktitle = {The Role of Business Processes in Service Oriented + Architectures}, + year = 2006, + ee = {http://drops.dagstuhl.de/opus/volltexte/2006/821}, + crossref = {leymann.ea:role:2006}, + abstract = {During the last 20 years, complexity has been an + interesting topic that has been investigated in many fields + of science, such as biology, neurology, software + engineering, chemistry, psychology, and economy. A survey + of the various approaches to understand complexity has lead + sometimes to a measurable quantity with a rigorous but + narrow definition and other times as merely an ad hoc + label. In this paper we investigate the complexity concept + to avoid a vague use of the term `complexity' in workflow + designs. We present several complexity metrics that have + been used for a number of years in adjacent fields of + science and explain how they can be adapted and use to + evaluate the complexity of workflows. } +} + +@Proceedings{ leymann.ea:role:2006, + editor = {Frank Leymann and Wolfgang Reisig and Satish R. Thatte and + Wil M. P. van der Aalst}, + title = {The Role of Business Processes in Service Oriented + Architectures, 16.07. - 21.07.2006}, + booktitle = {The Role of Business Processes in Service Oriented + Architectures}, + publisher = {Internationales Begegnungs- und Forschungszentrum fuer + Informatik (IBFI), S chloss Dagstuhl, Germany}, + series = {Dagstuhl Seminar Proceedings}, + volume = 06291, + year = 2006 +} + +@Article{ parnas:stop:2007, + author = {David Lorge Parnas}, + title = {Stop the numbers game}, + journal = j-cacm, + volume = 50, + number = 11, + year = 2007, + issn = {0001-0782}, + pages = {19--21}, + doi = {10.1145/1297797.1297815}, + address = pub-acm:adr, + publisher = pub-acm +} + + + + +@InBook{ gentry:ibe:2006, + author = {Craig Gentry}, + chapter = {IBE (Identity-Based Encryption)}, + title = {Handbook of Information Security}, + editor = {Hossein Bidgoli}, + volume = 2, + isbn = {0-471-64833-7}, + publisher = {John Wiley \& Sons}, + pages = {575--592}, + month = jan, + year = 2006 +} + +@InProceedings{ bethencourt.ea:ciphertext-policy:2007, + author = {John Bethencourt and Amit Sahai and Brent Waters}, + title = {Ciphertext-Policy Attribute-Based Encryption}, + booktitle = {IEEE Symposium on Security and Privacy}, + pages = {321--334}, + year = 2007, + doi = {10.1109/SP.2007.11}, + abstract = {In several distributed systems a user should only be able + to access data if a user posses a certain set of + credentials or attributes. Currently, the only method for + enforcing such policies is to employ a trusted server to + store the data and mediate access control. However, if any + server storing the data is compromised, then the + confidentiality of the data will be compromised. In this + paper we present a system for realizing complex access + control on encrypted data that we call ciphertext-policy + attribute-based encryption. By using our techniques + encrypted data can be kept confidential even if the storage + server is untrusted; moreover, our methods are secure + against collusion attacks. Previous attribute-based + encryption systems used attributes to describe the + encrypted data and built policies into user's keys; while + in our system attributes are used to describe a user's + credentials, and a party encrypting data determines a + policy for who can decrypt. Thus, our methods are + conceptually closer to traditional access control methods + such as role-based access control (RBAC). In addition, we + provide an implementation of our system and give + performance measurements.}, + publisher = pub-ieee, + address = pub-ieee:adr +} + +@Article{ karedla.ea:caching:1994, + author = {Ramakrishna Karedla and J. Spencer Love and Bradley G. + Wherry}, + title = {Caching strategies to improve disk system performance}, + journal = j-computer, + volume = 27, + number = 3, + issn = {0018-9162}, + year = 1994, + pages = {38--46}, + doi = {10.1109/2.268884}, + publisher = pub-ieee, + address = pub-ieee:adr, + abstract = {I/O subsystem manufacturers attempt to reduce latency by + increasing disk rotation speeds, incorporating more + intelligent disk scheduling algorithms, increasing I/O bus + speed, using solid-state disks, and implementing caches at + various places in the I/O stream. In this article, we + examine the use of caching as a means to increase system + response time and improve the data throughput of the disk + subsystem. Caching can help to alleviate I/O subsystem + bottlenecks caused by mechanical latencies. This article + describes a caching strategy that offers the performance of + caches twice its size. After explaining some basic caching + issues, we examine some popular caching strategies and + cache replacement algorithms, as well as the advantages and + disadvantages of caching at different levels of the + computer system hierarchy. Finally, we investigate the + performance of three cache replacement algorithms: random + replacement (RR), least recently used (LRU), and a + frequency-based variation of LRU known as segmented LRU + (SLRU). } +} + +@InProceedings{ megiddo.ea:arc:2003, + author = {Nimrod Megiddo and Dharmendra S. Modha}, + title = {{ARC}: A Self-Tuning, Low Overhead Replacement Cache}, + booktitle = {FAST '03: Proceedings of the 2nd USENIX Conference on File + and Storage Technologies}, + year = 2003, + pages = {115--130}, + location = {San Francisco, CA}, + publisher = {\acs{usenix} Association}, + address = {Berkeley, CA, USA} +} + +@InProceedings{ chou.ea:evaluation:1985, + author = {Hong-Tai Chou and David J. DeWitt}, + title = {An evaluation of buffer management strategies for + relational database systems}, + booktitle = {VLDB '1985: Proceedings of the 11th international + conference on Very Large Data Bases}, + year = 1985, + pages = {127--141}, + location = {Stockholm, Sweden}, + publisher = {VLDB Endowment} +} + +@InProceedings{ yu.ea:fdac:2009, + author = {Shucheng Yu and Kui Ren and Wenjing Lou}, + title = {{FDAC}: Toward fine-grained distributed data access + control in wireless sensor networks}, + booktitle = PROC # { \acs{ieee} Conference on Computer + Communications (INFOCOM)}, + year = 2009, + address = pub-ieee:adr, + publisher = pub-ieee, + abstract = {Distributed sensor data storage and retrieval has gained + increasing popularity in recent years for supporting + various applications. While distributed architecture enjoys + a more robust and fault-tolerant wireless sensor network + (WSN), such architecture also poses a number of security + challenges especially when applied in mission-critical + applications such as battle field and e-healthcare. First, + as sensor data are stored and maintained by individual + sensors and unattended sensors are easily subject to strong + attacks such as physical compromise, it is significantly + harder to ensure data security. Second, in many + mission-critical applications, fine-grained data access + control is a must as illegal access to the sensitive data + may cause disastrous result and/or prohibited by the law. + Last but not least, sensors usually are resource-scarce, + which limits the direct adoption of expensive cryptographic + primitives. To address the above challenges, we propose in + this paper a distributed data access control scheme that is + able to fulfill fine-grained access control over sensor + data and is resilient against strong attacks such as sensor + compromise and user colluding. The proposed scheme exploits + a novel cryptographic primitive called attribute-based + encryption (ABE), tailors, and adapts it for WSNs with + respect to both performance and security requirements. The + feasibility of the scheme is demonstrated by experiments on + real sensor platforms. To our best knowledge, this paper is + the first to realize distributed fine-grained data access + control for WSNs.} +} + +@InProceedings{ traynor.ea:massive-scale:2008, + author = {Patrick Traynor and Kevin R. B. Butler and William Enck + and Patrick McDaniel}, + title = {Realizing Massive-Scale Conditional Access Systems Through + Attribute-Based Cryptosystems}, + booktitle = PROC # { 15th Annual Network and Distributed System + Security Symposium (NDSS 2008)}, + year = 2008, + abstract = {The enormous growth in the diversity of content services + such as IPtv has highlighted the inadequacy of the + accompanying content security: existing security mechanisms + scale poorly, require complex and often costly dedicated + hardware, or fail to meet basic security requirements. New + security methods are needed. In this paper, we explore the + ability of attribute-based encryption (ABE) to meet the + unique performance and security requirements of conditional + access systems such as subscription radio and payper- view + television. We show through empirical study that costs of + ABE make its direct application inappropriate, but present + constructions that mitigate its incumbent costs. We develop + an extensive simulation that allows us to explore the + performance of a number of virtual hardware configurations + and construction parameters over workloads developed from + real subscription and television audiences. These + simulations show that we can securely deliver high quality + content to viewerships of the highest rated shows being + broadcast today, some in excess of 26,000,000 viewers. It + is through these experiments that we expose the viability + of not only ABE-based content delivery, but applicability + of ABE systems to large-scale distributed systems.}, + url = {http://www.isoc.org/isoc/conferences/ndss/08/papers/06_realizing_massive-scale_conditional.pdf} + , + location = {San Diego, California, USA}, + month = feb, + publisher = {The Internet Society} +} + +@Article{ alpern.ea:defining:1985, + author = {Bowen Alpern and Fred B. Schneider}, + title = {Defining Liveness}, + journal = j-ipl, + volume = 21, + number = 4, + year = 1985, + pages = {181--185} +} + +@Article{ lamport:proving:1977, + title = {Proving the Correctness of Multiprocess Programs}, + author = {Leslie Lamport}, + journal = j-tse, + year = 1977, + month = {March}, + volume = {SE-3}, + number = 2, + pages = {125--143}, + abstract = {The inductive assertion method is generalized to permit + formal, machine-verifiable proofs of correctness for + multiprocess programs. Individual processes are represented + by ordinary flowcharts, and no special synchronization + mechanisms are assumed, so the method can be applied to a + large class of multiprocess programs. A correctness proof + can be designed together with the program by a hierarchical + process of stepwise refinement, making the method practical + for larger programs. The resulting proofs tend to be + natural formalizations of the informal proofs that are now + used.}, + keywords = {null Assertions, concufrent programming, correctness, + multiprocessing, synchronization}, + doi = {10.1109/TSE.1977.229904}, + issn = {0098-5589} +} + +@InProceedings{ goodenough.ea:toward:1975, + author = {John B. Goodenough and Susan L. Gerhart}, + title = {Toward a theory of test data selection}, + booktitle = PROC # { the international conference on Reliable + software}, + year = 1975, + pages = {493--510}, + url = {http://portal.acm.org/citation.cfm?id=808473&dl=ACM&coll=GUIDE#} + , + location = {Los Angeles, California}, + abstract = {This paper examines the theoretical and practical role of + testing in software development. We prove a fundamental + theorem showing that properly structured tests are capable + of demonstrating the absence of errors in a program. The + theorem's proof hinges on our definition of test + reliability and validity, but its practical utility hinges + on being able to show when a test is actually reliable. We + explain what makes tests unreliable (for example, we show + by example why testing all program statements, predicates, + or paths is not usually sufficient to insure test + reliability), and we outline a possible approach to + developing reliable tests. We also show how the analysis + required to define reliable tests can help in checking a + program's design and specifications as well as in + preventing and detecting implementation errors. }, + acknowledgement={none} +} + +@InCollection{ aczel:introduction:1977, + author = {Peter Aczel}, + title = {An Introduction to Inductive Definitions}, + booktitle = {Handbook of Mathematical Logic}, + editor = {Jon Barwise}, + series = {Studies in Logic and the Foundations of Mathematics}, + volume = 90, + chapter = {C.7}, + pages = {739--782}, + publisher = {North-Holland}, + address = {Amsterdam}, + year = 1977 +} + +@InProceedings{ cousot.ea:abstract:1977, + author = {Patrick Cousot and Radhia Cousot}, + title = {Abstract interpretation: a unified lattice model for + static analysis of programs by construction or + approximation of fixpoints}, + booktitle = PROC # { the 4th ACM SIGACT-SIGPLAN symposium on + Principles of programming languages}, + year = 1977, + pages = {238--252}, + location = {Los Angeles, California}, + doi = {10.1145/512950.512973}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={none} +} + +@Article{ cardelli.ea:understanding:1985, + author = {Luca Cardelli and Peter Wegner}, + title = {On understanding types, data abstraction, and + polymorphism}, + journal = {ACM Computing Surveys}, + volume = 17, + number = 4, + year = 1985, + issn = {0360-0300}, + acknowledgement={none}, + pages = {471--523}, + doi = {10.1145/6041.6042}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {Our objective is to understand the notion of type in + programming languages, present a model of typed, + polymorphic programming languages that reflects recent + research in type theory, and examine the relevance of + recent research to the design of practical programming + languages. Object-oriented languages provide both a + framework and a motivation for exploring the interaction + among the concepts of type, data abstraction, and + polymorphism, since they extend the notion of type to data + abstraction and since type inheritance is an important form + of polymorphism. We develop a &lgr;-calculus-based model + for type systems that allows us to explore these + interactions in a simple setting, unencumbered by + complexities of production programming languages. The + evolution of languages from untyped universes to + monomorphic and then polymorphic type systems is reviewed. + Mechanisms for polymorphism such as overloading, coercion, + subtyping, and parameterization are examined. A unifying + framework for polymorphic type systems is developed in + terms of the typed &lgr;-calculus augmented to include + binding of types by quantification as well as binding of + values by abstraction. The typed &lgr;-calculus is + augmented by universal quantification to model generic + functions with type parameters, existential quantification + and packaging (information hiding) to model abstract data + types, and bounded quantification to model subtypes and + type inheritance. In this way we obtain a simple and + precise characterization of a powerful type system that + includes abstract data types, parametric polymorphism, and + multiple inheritance in a single consistent framework. The + mechanisms for type checking for the augmented + &lgr;-calculus are discussed. The augmented typed + &lgr;-calculus is used as a programming language for a + variety of illustrative examples. We christen this language + Fun because fun instead of &lgr; is the functional + abstraction keyword and because it is pleasant to deal + with. Fun is mathematically simple and can serve as a basis + for the design and implementation of real programming + languages with type facilities that are more powerful and + expressive than those of existing programming languages. In + afsyped object-oriented languages. } +} + +@InProceedings{ wadler:listlessness:1985, + author = {Philip Wadler}, + title = {Listlessness is better than laziness II: composing + listless functions}, + booktitle = {on Programs as data objects}, + year = 1985, + isbn = {0-387-16446-4}, + pages = {282--305}, + location = {Copenhagen, Denmark}, + publisher = pub-springer, + address = pub-springer:adr, + acknowledgement={none} +} + +@InProceedings{ clement.ea:simple:1986, + author = {Dominique Cl\'ement and Thierry Despeyroux and Gilles Kahn + and Jo\"elle Despeyroux}, + title = {A simple applicative language: {mini-ML}}, + booktitle = {LFP '86: Proceedings of the 1986 ACM conference on LISP + and functional programming}, + year = 1986, + isbn = {0-89791-200-4}, + pages = {13--27}, + location = {Cambridge, Massachusetts, United States}, + doi = {10.1145/319838.319847}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={none} +} + +@InProceedings{ hamlet:theoretical:1989, + author = {R. Hamlet}, + title = {Theoretical comparison of testing methods}, + booktitle = PROC # { the ACM SIGSOFT '89 third symposium on + Software testing, analysis, and verification}, + year = 1989, + isbn = {0-89791-342-6}, + pages = {28--37}, + location = {Key West, Florida, United States}, + doi = {10.1145/75308.75313}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={none} +} + +@Article{ frankl.ea:applicable:1988, + author = {P. G. Frankl and E. J. Weyuker}, + title = {An Applicable Family of Data Flow Testing Criteria}, + journal = j-ieee-tse, + volume = 14, + number = 10, + year = 1988, + month = oct, + issn = {0098-5589}, + pages = {1483--1498}, + doi = {http://dx.doi.org/10.1109/32.6194}, + publisher = pub-ieee, + abstract = {he authors extend the definitions of the previously + introduced family of data flow testing criteria to apply to + programs written in a large subset of Pascal. They then + define a family of adequacy criteria called feasible data + flow testing criteria, which are derived from the data-flow + testing criteria. The feasible data flow testing criteria + circumvent the problem of nonapplicability of the data flow + testing criteria by requiring the test data to exercise + only those definition-use associations which are + executable. It is shown that there are significant + differences between the relationships among the data flow + testing criteria and the relationships among the feasible + data flow testing criteria. The authors discuss a + generalized notion of the executability of a path through a + program unit. A script of a testing session using their + data flow testing tool, ASSET, is included.}, + acknowledgement={none} +} + +@InProceedings{ teo.ea:use:1988, + author = {Ghee S. Teo and M\'{\i}che{\'a}l Mac an Airchinnigh}, + title = {The Use of VDM in the Specification of Chinese + Characters.}, + booktitle = {VDM Europe}, + year = 1988, + pages = {476--499}, + crossref = {bloomfield.ea:vdm:1988}, + acknowledgement={none} +} + +@Proceedings{ bloomfield.ea:vdm:1988, + editor = {Robin E. Bloomfield and Lynn S. Marshall and Roger B. + Jones}, + title = {VDM '88, VDM - The Way Ahead, 2nd VDM-Europe Symposium, + Dublin, Ireland, September 11-16, 1988, Proceedings}, + booktitle = {VDM Europe}, + publisher = pub-springer, + series = lncs, + volume = 328, + year = 1988, + isbn = {3-540-50214-9}, + acknowledgement={none}, + bibkey = {bloomfield.ea:vdm:1988} +} + +@InProceedings{ cook.ea:inheritance:1990, + author = {William R. Cook and Walter Hill and Peter S. Canning}, + title = {Inheritance is not subtyping}, + booktitle = {POPL '90: Proceedings of the 17th ACM SIGPLAN-SIGACT + symposium on Principles of programming languages}, + year = 1990, + isbn = {0-89791-343-4}, + pages = {125--135}, + location = {San Francisco, California, United States}, + doi = {10.1145/96709.96721}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={none}, + abstract = {In typed object-oriented languages the subtype relation is + typically based on the inheritance hierarchy. This + approach, however, leads either to insecure type-systems or + to restrictions on inheritance that make it less flexible + than untyped Smalltalk inheritance. We present a new typed + model of inheritance that allows more of the flexibility of + Smalltalk inheritance within a statically-typed system. + Significant features of our analysis are the introduction + of polymorphism into the typing of inheritance and the + uniform application of inheritance to objects, classes and + types. The resulting notion of type inheritance allows us + to show that the type of an inherited object is an + inherited type but not always a subtype. }, + bibkey = {cook.ea:inheritance:1990} +} + +@Article{ lynch.ea:forward:1996, + author = {Nancy Lynch and Frits Vaandrager}, + title = {Forward and backward simulations II.: timing-based + systems}, + journal = {Inf. Comput.}, + volume = 128, + number = 1, + year = 1996, + issn = {0890-5401}, + pages = {1--25}, + doi = {10.1006/inco.1996.0060}, + publisher = {Academic Press, Inc.}, + acknowledgement={none}, + bibkey = {lynch.ea:forward:1996} +} + +@Article{ lamport.ea:should:1999, + author = {Leslie Lamport and Lawrence C. Paulson}, + title = {Should your specification language be typed.}, + journal = {ACM Trans. Program. Lang. Syst.}, + volume = 21, + number = 3, + year = 1999, + acknowledgement={none}, + pages = {502--526}, + publisher = pub-acm, + address = pub-acm:adr, + issn = {0164-0925}, + doi = {10.1145/319301.319317} +} + +@InProceedings{ muller.ea:formal:1997, + title = {Formal Specification Techniques for Object-Oriented + Programs }, + author = {Peter M{\"u}ller and Arnd Poetzsch-Heffter }, + editor = {Jarke, M. and Pasedach, K. and Pohl, K. }, + booktitle = {Informatik 97: Informatik als Innovationsmotor }, + series = {Informatik Aktuell }, + publisher = pub-springer, + address = pub-springer:adr, + acknowledgement={none}, + year = 1997, + abstract = {Specification techniques for object-oriented programs + relate the operational world of programs to the declarative + world of specifications. We present a formal foundation of + interface specification languages. Based on the formal + foundation, we develop new specification techniques to + describe functional behavior, invariants, and side-effects. + Furthermore, we discuss the influence of program extensions + on program correctness.} +} + +@Article{ wolper:meaning:1997, + author = {Pierre Wolper}, + title = {The Meaning of ``Formal'': From Weak to Strong Formal + Methods.}, + journal = j-sttt, + volume = 1, + publisher = pub-springer, + address = pub-springer:adr, + number = {1-2}, + year = 1997, + pages = {6--8}, + doi = {10.1007/s100090050002}, + acknowledgement={none} +} + +@TechReport{ aredo.ea:towards:1999, + title = {Towards a formalization of {UML} Class Structure in + {PVS}}, + author = {Demissie B. Aredo and I. Traore and K. St{\o}len}, + institution = {Department of Informatics, University of Oslo}, + year = 1999, + month = aug, + number = 272, + acknowledgement={none} +} + +@Book{ derrick.ea:refinement:2001, + author = {John Derrick and Eerke Boiten}, + title = {Refinement in {Z} and {Object-Z}}, + library = {ETH-BIB}, + publisher = pub-springer, + address = pub-springer:adr, + isbn = {1-85233-245-X}, + url = {http://www.cs.kent.ac.uk/people/staff/jd1/books/refine/}, + year = 2001, + acknowledgement={none}, + bibkey = {derrick.ea:refinement:2001} +} + +@TechReport{ boer.ea:towards:2003, + author = {Frank S. de Boer and Cees Pierik}, + year = 2003, + title = {Towards an environment for the verification of annotated + object-oriented programs}, + number = {UU-CS-2003-002}, + institution = {Institute of Information and Computing Sciences, Utrecht + University}, + acknowledgement={none} +} + +@Article{ dybjer.ea:verifying:2004, + author = {Peter Dybjer and Qiao Haiyana and Makoto Takeyama}, + booktitle = {Third International Conference on Quality Software: QSIC + 2003}, + title = {Verifying Haskell programs by combining testing, model + checking and interactive theorem proving}, + journal = {Information and Software Technology}, + year = 2004, + number = 15, + volume = 46, + pages = {1011--1025}, + doi = {10.1016/j.infsof.2004.07.002}, + abstract = {We propose a program verification method that combines + random testing, model checking and interactive theorem + proving. Testing and model checking are used for debugging + programs and specifications before a costly interactive + proof attempt. During proof development, testing and model + checking quickly eliminate false conjectures and generate + counterexamples which help to correct them. With an + interactive theorem prover we also ensure the correctness + of the reduction of a top level problem to subproblems that + can be tested or proved. We demonstrate the method using + our random testing tool and binary decision diagrams-based + (BDDs) tautology checker, which are added to the Agda/Alfa + interactive proof assistant for dependent type theory. In + particular we apply our techniques to the verification of + Haskell programs. The first example verifies the BDD + checker itself by testing its components. The second uses + the tautology checker to verify bitonic sort together with + a proof that the reduction of the problem to the checked + form is correct.}, + acknowledgement={none} +} + +@PhDThesis{ kopylov:type:2004, + author = {Alexei Pavlovich Kopylov}, + title = {Type Theoretical Foundations for Data Structures, Classes, + and Objects}, + school = {Cornell University}, + year = 2004, + abstract = {In this thesis we explore the question of how to represent + programming data structures in a constructive type theory. + The basic data structures in programing languages are + records and objects. Most known papers treat such data + structure as primitive. That is, they add new primitive + type constructors and sup- porting axioms for records and + objects. This approach is not satisfactory. First of all it + complicates a type theory a lot. Second, the validity of + the new axioms is not easily established. As we will see + the naive choice of axioms can lead to contradiction even + in the simplest cases. We will show that records and + objects can be defined in a powerful enough type theory. We + will also show how to use these type constructors to define + abstract data structure. }, + acknowledgement={none}, + month = jan +} + +@InProceedings{ kyas.ea:message:2004, + author = {Marcel Kyas and Frank S. de Boer}, + title = {On Message Specification in {OCL}}, + booktitle = {Compositional Verification in UML}, + year = 2004, + editor = {Frank S. de Boer and Marcello Bonsangue}, + acknowledgement={none}, + series = entcs, + volume = 101, + pages = {73--93}, + publisher = elsevier, + address = elsevier:adr, + abstract = {The object constraint language (OCL) is the established + language for specifying of properties of objects and object + structures. Recently an extension of OCL has been proposed + for the specification of messages sent between objects. In + this paper we present a generalization of this extension + which allows addition- ally to specify causality + constraints. From a pragmatic point of view, such causality + constraints are needed to express, for example, that each + acknowledgment must be preceded by a matching request, + which is frequently required by communication protocols. + Our generalization is based on the introduction of + histories into OCL. Histories describe the external + behavior of objects and groups of objects. Moreover, to + reason compositionally about the behavior of a complex + system we distinguish between local specifications of a + single object and global specifications describing the + interaction between objects. These two types of + specifications are expressed in syntactically difierent + dialects of OCL. Our notion of compositionality, which is + formalized in this paper by a compatibility predicate on + histories, allows the verification of models during the + early stages of a design. } +} + +@InProceedings{ kyas.ea:extended:2004, + author = {Marcel Kyas and Harald Fecher}, + title = {An Extended Type System for {OCL} supporting Templates and + Transformations}, + booktitle = {Formal Methods for Open Object-Based Distributed Systems, + 7th {IFIP} {WG} 6.1 International Conference, {FMOODS} + 2005, Athens, Greece, June 15-17, 2005, Proceedings}, + acknowledgement={none}, + publisher = pub-springer, + address = pub-springer:adr, + year = 2004, + volume = 3535, + editor = {Martin Steffen and Gianluigi Zavattaro}, + isbn = {3-540-26181-8}, + pages = {83--98}, + series = llncs, + doi = {10.1007/11494881_6} +} + +@InProceedings{ giese.ea:simplifying:2005, + author = {Martin Giese and Daniel Larsson}, + title = {Simplifying Transformations of {OCL} Constraints}, + booktitle = {Proceedings, Model Driven Engineering Languages and + Systems (MoDELS) Conference 2005, Montego Bay, Jamaica}, + editor = {Lionel Briand and Clay Williams}, + pages = {309--323}, + volume = 3713, + acknowledgement={none}, + month = oct, + series = lncs, + year = 2005 +} + +@InCollection{ okeefe:improving:2006, + paddress = {Heidelberg}, + address = pub-springer:adr, + author = {Greg O'Keefe}, + booktitle = {{MoDELS} 2006: Model Driven Engineering Languages and + Systems}, + language = {USenglish}, + publisher = pub-springer, + acknowledgement={none}, + series = lncs, + doi = {10.1007/11880240_4}, + number = 4199, + year = 2006, + pages = {42--56}, + editor = {Oscar Nierstrasz and Jon Whittle and David Harel and + Gianna Reggio}, + title = {Improving the Definition of {UML}}, + abstract = {The literature on formal semantics for UML is huge and + growing rapidly. Most contributions open with a brief + remark motivating the work, then quickly move on to the + technical detail. How do we decide whether more rigorous + semantics are needed? Do we currently have an adequate + definition of the syntax? How do we evaluate proposals to + improve the definition? We provide criteria by which these + and other questions can be answered. The growing role of + UML is examined. We compare formal language definition + techniques with those currently used in the definition of + UML. We study this definition for both its content and + form, and conclude that improvements are required. Finally, + we briefly survey the UML formalisation literature, + applying our criteria to determine which of the existing + approaches show the most potential.} +} + +@TechReport{ wasserrab.ea:operational:2005, + author = {Daniel Wasserrab and Tobias Nipkow and Gregor Snelting and + Frank Tip}, + title = {An Operational Semantics and Type Safety Proof for + {\Cpp}-Like Multiple Inheritance}, + institution = {IBM Yorktown Heights}, + number = {RC 23709}, + month = aug, + year = 2005, + abstract = {We present, for the first time, an operational semantics + and a type system for a \Cpp-like object-oriented language + with both shared and repeated multiple inheritance, + together with a machine-checked proof of type safety. The + formalization uncovered several subtle ambiguities in \Cpp, + which \Cpp compilers resolve by ad-hoc means or which even + result in uncontrolled run-time errors. The semantics is + formalized in Isabelle/HOL.}, + acknowledgement={none} +} + +@Unpublished{ crane.ea:class:2006, + author = {Michelle L. Crane and Juergen Dingel and Zinovy Diskin}, + title = {Class Diagrams: Abstract Syntax and Mapping to System + Model}, + note = {Version 1.7.4}, + url = {http://www.cs.queensu.ca/~stl/internal/uml2/documents.htm} + , + pdf = {papers/2006/crane.ea-class-2006.pdf}, + acknowledgement={none}, + year = 2006 +} + +@Article{ henning:rise:2006, + author = {Michi Henning}, + title = {The rise and fall of {CORBA}}, + journal = {Queue}, + volume = 4, + number = 5, + year = 2006, + issn = {1542-7730}, + pages = {28--34}, + doi = {10.1145/1142031.1142044}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={none}, + abstract = {Depending on exactly when one starts counting, CORBA is + about 10-15 years old. During its lifetime, CORBA has moved + from being a bleeding-edge technology for early adopters, + to being a popular middleware, to being a niche technology + that exists in relative obscurity. It is instructive to + examine why CORBA---despite once being heralded as the + {\^a}\80\9Cnext-generation technology for e-commerce---suffered + this fate. CORBA{\^a}\80\99s history is one that the computing + industry has seen many times, and it seems likely that + current middleware efforts, specifically Web services, will + reenact a similar history.} +} + +@InProceedings{ briggs.ea:effective:1994, + author = {Preston Briggs and Keith D. Cooper}, + title = {Effective partial redundancy elimination}, + booktitle = PROC # { the ACM SIGPLAN 1994 conference on + Programming language design and implementation}, + year = 1994, + isbn = {0-89791-662-X}, + pages = {159--170}, + location = {Orlando, Florida, United States}, + doi = {10.1145/178243.178257}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={none}, + bibkey = {briggs.ea:effective:1994}, + abstract = {Partial redundancy elimination is a code optimization with + a long history of literature and implementation. In + practice, its effectiveness depends on issues of naming and + code shape. This paper shows that a combination of global + reassociation and global value numbering can increase the + effectiveness of partial redundancy elimina- tion. By + imposing a discipline on the choice of names and the shape + of expressions, we are able to expose more redundancies, As + part of the work, we introduce a new algorithm for global + reassociation of expressions. It uses global in- formation + to reorder expressions, creating opportunities for other + optimization. The new algorithm generalizes earlier work + that ordered FORTRAN array address ex- pressions to improve + optimization.} +} + +@Article{ binder:design:1994, + author = {Robert V. Binder}, + title = {Design for testability in object-oriented systems}, + journal = j-cacm, + publisher = pub-acm, + address = pub-acm:adr, + volume = 37, + number = 9, + pages = {87--101}, + month = sep, + year = 1994, + issn = {0001-0782}, + acknowledgement={none}, + keywords = {design; reliability}, + bibkey = {binder:design:1994} +} + +@InProceedings{ bernot.ea:theory:1997, + author = {Gilles Bernot and Laurent Bouaziz and Pascale {Le Gall}}, + title = {A theory of probabilistic functional testing}, + booktitle = PROC # { the 19th international conference on + Software engineering}, + year = 1997, + isbn = {0-89791-914-9}, + pages = {216--226}, + pdf = {papers/1997/p216-bernot.pdf}, + location = {Boston, Massachusetts, United States}, + doi = {10.1145/253228.253273}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={none} +} + +@InProceedings{ ntafos:random:1998, + author = {Simeon Ntafos}, + title = {On random and partition testing}, + booktitle = PROC # { ACM SIGSOFT international symposium on + Software testing and analysis}, + year = 1998, + isbn = {0-89791-971-8}, + pages = {42--48}, + location = {Clearwater Beach, Florida, United States}, + doi = {10.1145/271771.271785}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={none}, + bibkey = {ntafos:random:1998} +} + +@InProceedings{ hackett.ea:modular:2006, + author = {Brian Hackett and Manuvir Das and Daniel Wang and Zhe + Yang}, + title = {Modular checking for buffer overflows in the large}, + booktitle = {ICSE '06: Proceeding of the 28th international conference + on Software engineering}, + year = 2006, + acknowledgement={none}, + isbn = {1-59593-375-1}, + pages = {232--241}, + location = {Shanghai, China}, + publisher = pub-acm, + address = pub-acm:adr, + doi = {10.1145/1134285.1134319} +} + +@InProceedings{ biere.ea:sat-model-checking:1999, + author = {A. Biere and A. Cimatti and E. M. Clarke and M. Fujita and + Y. Zhu}, + title = {Symbolic model checking using SAT procedures instead of + {BDDs}}, + booktitle = PROC # { the 36th ACM/IEEE conference on Design + automation conference}, + year = 1999, + isbn = {1-58133-109-7}, + pages = {317--320}, + location = {New Orleans, Louisiana, United States}, + doi = {10.1145/309847.309942}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={none}, + bibkey = {biere.ea:sat-model-checking:1999} +} + +@Article{ france:problem-oriented:34-10, + author = {Robert France}, + title = {A problem-oriented analysis of basic {UML} static + requirements modeling concepts}, + journal = {ACM SIG-PLAN Notices}, + volume = 34, + number = 10, + pages = {57--69}, + year = 1999, + abstract = {The Unified Modeling Language (UML) is a standard modeling + language in which some of the best object-oriented (OO) + modeling experiences are embedded. In this paper we + illustrate the role formal specification techniques can + play in developing a precise semantics for the UML. We + present a precise characterization of requirements-level + (problem-oriented) Class Diagrams and outline how the + characterization can be used to semantically analyze + requirements Class Diagrams.}, + acknowledgement={none}, + bibkey = {france:problem-oriented:34-10} +} + +@InProceedings{ claessen.ea:quickcheck:2000, + author = {Koen Claessen and John Hughes}, + title = {{QuickCheck}: a lightweight tool for random testing of + {Haskell} programs}, + booktitle = PROC # { the fifth ACM SIGPLAN international + conference on Functional programming}, + year = 2000, + isbn = {1-58113-202-6}, + pages = {268--279}, + doi = {10.1145/351240.351266}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {Quick Check is a tool which aids the Haskell programmer in + formulating and testing properties of programs. Properties + are described as Haskell functions, and can be + automatically tested on random input, but it is also + possible to define custom test data generators. We present + a number of case studies, in which the tool was + successfully used, and also point out some pitfalls to + avoid. Random testing is especially suitable for functional + programs because properties can be stated at a fine grain. + When a function is built from separately tested components, + then random testing suffices to obtain good coverage of the + definition under test. }, + acknowledgement={none}, + bibkey = {claessen.ea:quickcheck:2000} +} + +@Article{ kozen:hoare:2000, + author = {Dexter Kozen}, + title = {On Hoare logic and Kleene algebra with tests}, + journal = {ACM Transactions on Computational Logic}, + volume = 1, + number = 1, + year = 2000, + issn = {1529-3785}, + pages = {60--76}, + doi = {10.1145/343369.343378}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {We show that Kleene algebra with tests (KAT) subsumes + propositional Hoare logic (PHL). Thus the specialized + syntax and deductive apparatus of Hoare logic are + inessential and can be replaced by simple equational + reasoning. In addition, we show that all relationally valid + inference rules are derivable in KAT and that deciding the + relational validity of such rules is PSPACE-complete. }, + acknowledgement={none}, + bibkey = {kozen:hoare:2000} +} + +@InProceedings{ chen.ea:semi-proving:2002, + author = {T. Y. Chen and T. H. Tse and Zhiquan Zhou}, + title = {Semi-proving: an integrated method based on global + symbolic evaluation and metamorphic testing}, + booktitle = PROC # { the international symposium on Software + testing and analysis}, + year = 2002, + isbn = {1-58113-562-9}, + pages = {191--195}, + location = {Roma, Italy}, + doi = {10.1145/566172.566202}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={none}, + bibkey = {chen.ea:semi-proving:2002} +} + +@InProceedings{ naumovich.ea:static:2004, + author = {Gleb Naumovich and Paolina Centonze}, + title = {Static Analysis of Role-Based Access Control in {J2EE} + Applications}, + abstract = {This work describes a new technique for analysis of Java + 2, Enterprise Edition (J2EE) applications. In such + applications, Enterprise Java Beans (EJBs) are commonly + used to encapsulate the core computations performed on Web + servers. Access to EJBs is protected by application + servers, according to role-based access control policies + that may be created either at development or deployment + time. These policies may prohibit some types of users from + accessing specific EJB methods. We present a static + technique for analyzing J2EE access control policies with + respect to security-sensitive fields of EJBs and other + server-side objects. Our technique uses points-to analysis + to determine which object fields are accessed by which EJB + methods, directly or indirectly. Based on this information, + J2EE access control policies are analyzed to identify + potential inconsistencies that may lead to security holes. + }, + volume = 29, + number = 5, + month = sep, + year = 2004, + booktitle = {TAV-WEB Proceedings}, + publisher = pub-acm, + address = pub-acm:adr, + acknowledgement={none}, + bibkey = {naumovich.ea:static:2004} +} + +@InProceedings{ altenhofen.ea:high-level:2005, + author = {Michael Altenhofen and Egon B{\"o}rger and Jens Lemcke}, + title = {A High-Level Specification for Mediators(Virtual + Providers)}, + booktitle = {Business Process Management Workshops}, + year = 2005, + pages = {116--129}, + doi = {10.1007/11678564_11}, + crossref = {bussler.ea:business:2006} +} + +@Proceedings{ bussler.ea:business:2006, + editor = {Christoph Bussler and Armin Haller}, + title = {Business Process Management Workshops, BPM 2005 + International Workshops, BPI, BPD, ENEI, BPRM, WSCOBPM, + BPS, Nancy, France, September 5, 2005, Revised Selected + Papers}, + booktitle = {Business Process Management Workshops}, + volume = 3812, + year = 2006, + isbn = {3-540-32595-6} +} + +@Article{ grieskamp.ea:generating:2002, + author = {Wolfgang Grieskamp and Yuri Gurevich and Wolfram Schulte + and Margus Veanes}, + title = {Generating finite state machines from abstract state + machines}, + journal = {SIGSOFT Softw. Eng. Notes}, + volume = 27, + number = 4, + year = 2002, + issn = {0163-5948}, + pages = {112--122}, + doi = {10.1145/566171.566190}, + publisher = pub-acm, + address = pub-acm:adr +} + +@InProceedings{ paulson:isabelle:1988, + author = {Lawrence C. Paulson}, + title = {Isabelle: The Next Seven Hundred Theorem Provers}, + booktitle = {CADE}, + year = 1988, + pages = {772--773}, + crossref = {lusk.ea:cade:1988} +} + +@Proceedings{ lusk.ea:cade:1988, + editor = {Ewing L. Lusk and Ross A. Overbeek}, + title = {9th International Conference on Automated Deduction, + Argonne, Illinois, USA, May 23-26, 1988, Proceedings}, + booktitle = {CADE}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 310, + year = 1988, + isbn = {3-540-19343-X} +} + +@Article{ ntafos:comparison:1988, + author = {S. C. Ntafos}, + title = {A Comparison of Some Structural Testing Strategies}, + journal = j-ieee-tse, + volume = 14, + number = 6, + year = 1988, + pdf = {papers/1988/e0868.pdf}, + issn = {0098-5589}, + pages = {868--874}, + doi = {http://csdl.computer.org/comp/trans/ts/1988/06/e0868abs.htm} + , + publisher = pub-ieee, + address = pub-ieee:adr, + abstract = {Several structural testing strategies are compared in + terms of their relative coverage of the program's structure + and also in terms of the number of test cases needed to + satisfy each strategy. Some of the deficiencies of such + comparisons are discussed}, + acknowledgement={none} +} + +@InProceedings{ lange.ea:flyspeck:2008, + author = {Christoph Lange and Sean McLaughlin and Florian Rabe}, + title = {Flyspeck in a Semantic {Wiki}}, + booktitle = {SemWiki}, + year = 2008, + url = {http://ceur-ws.org/Vol-360/paper-21.pdf}, + crossref = {lange.ea:semwiki:2008} +} + +@Proceedings{ lange.ea:semwiki:2008, + editor = {Christoph Lange and Sebastian Schaffert and Hala + Skaf-Molli and Max V{\"o}lkel}, + title = PROC # {the 3rd Semantic Wiki Workshop (SemWiki + 2008) at the 5th European Semantic Web Conference (ESWC + 2008), Tenerife, Spain, June 2nd, 2008}, + booktitle = {SemWiki}, + publisher = {CEUR-WS.org}, + series = {CEUR Workshop Proceedings}, + volume = 360, + year = 2008 +} + +@Book{ matouvsek.ea:invitation:2008, + author = {Ji{\v}r{\'\i} Matou{\v}sek, and Jaroslav Ne{\v}set{\v}ril}, + title = {Invitation to discrete mathematics.}, + language = {English}, + edition = {2nd}, + publisher = pub-oxford, + address = pub-oxford:adr, + pages = 443, + year = 2008, + isbn = {978-0198570431}, + abstract = {This is the second edition of a delightful textbook, see + [Invitation to discrete mathematics. (Oxford): Clarendon + Press. (1998; Zbl 0901.05001)]. Besides the usual + elimination of a few typos there are some additions, namely + a chapter on partially ordered sets, a section on + Tur\'{a}n's theorem on the number of edges in a + triangle-free graph and a chapter on Ramsey's theorem.\par + New to the second edition are also several proofs of the + Cauchy-Schwarz inequality, a very attractive elegant new + proof of Cayley's theorem on the number of labeled trees on + $n$ vertices via PARTs (Plans of Assembly of a Rooted + Tree), which the authors attribute to Jim Pitman, and + another proof of the determinant formula for counting + spanning trees of a given graph. The newly added geometric + interpretation of the construction of the real projective + plane is aided by the beautiful artistic rendering in the + figure with the caption ``The real projective plane in + moonlight''.}, + keywords = {discrete mathematics; problem solving; counting + techniques; graph theory; trees; algorithms; planar graphs; + Sperner's theorem; finite projective planes; probabilistic + method; generating functions; partially ordered sets; Turan + theorem; Ramsey theorem; Cauchy Schwartz inequality; Cayley + theorem; geometric interpretation; real projective plane} +} + +@Book{ syme.ea:expert-f:2007, + author = {Don Syme and Adam Granicz and Antonio Cisternino}, + title = {Expert F\# (Expert's Voice in {.Net})}, + isbn = 9781590598504, + publisher = {Apress}, + pages = 609, + year = 2007 +} + +@Book{ baier.ea:principles:2008, + abstract = {Our growing dependence on increasingly complex computer + and software systems necessitates the development of + formalisms, techniques, and tools for assessing functional + properties of these systems. One such technique that has + emerged in the last twenty years is model checking, which + systematically (and automatically) checks whether a model + of a given system satisfies a desired property such as + deadlock freedom, invariants, or request-response + properties. This automated technique for verification and + debugging has developed into a mature and widely used + approach with many applications. \_Principles of Model + Checking\_ offers a comprehensive introduction to model + checking that is not only a text suitable for classroom use + but also a valuable reference for researchers and + practitioners in the field. + + The book begins with the basic principles for modeling + concurrent and communicating systems, introduces different + classes of properties (including safety and liveness), + presents the notion of fairness, and provides automata- + based algorithms for these properties. It introduces the + temporal logics LTL and CTL, compares them, and covers + algorithms for verifying these logics, discussing real-time + systems as well as systems subject to random phenomena. + Separate chapters treat such efficiency-improving + techniques as abstraction and symbolic manipulation. The + book includes an extensive set of examples (most of which + run through several chapters) and a complete set of basic + results accompanied by detailed proofs. Each chapter + concludes with a summary, bibliographic notes, and an + extensive list of exercises of both practical and + theoretical nature.}, + author = {Christel Baier and Joost-Pieter Katoen}, + howpublished = {Hardcover}, + isbn = {026202649X}, + month = may, + publisher = pub-mit, + address = pub-mit:adr, + title = {Principles of Model Checking}, + year = 2008 +} + +@Book{ bertot.ea:interactive:2004, + author = {Yves Bertot and Pierre Cast{\'e}ran}, + keywords = {theorem-proving, type-theory, verification}, + title = {Interactive Theorem Proving and Program Development. + Coq'Art: The Calculus of Inductive Constructions}, + pages = 500, + publisher = pub-springer, + address = pub-springer:adr, + isbn = {978-3540208549}, + year = 2004, + abstract = {Coq is an interactive proof assistant for the development + of mathematical theories and formally certified software. + It is based on a theory called the calculus of inductive + constructions, a variant of type theory. This book provides + a pragmatic introduction to the development of proofs and + certified programs using Coq. With its large collection of + examples and exercises it is an invaluable tool for + researchers, students, and engineers interested in formal + methods and the development of zero-fault software.} +} + +@Article{ korel:automated:1990, + author = {Bogdan Korel}, + title = {Automated Software Test Data Generation}, + journal = j-ieee-tse, + volume = 16, + number = 8, + year = 1990, + issn = {0098-5589}, + pages = {870--879}, + doi = {10.1109/32.57624}, + publisher = pub-ieee, + address = pub-ieee:adr, + acknowledgement={none}, + bibkey = {korel:automated:1990} +} + +@Article{ hamlet.ea:partition:1990, + author = {Dick Hamlet and Ross Taylor}, + title = {Partition Testing Does Not Inspire Confidence (Program + Testing)}, + journal = j-ieee-tse, + volume = 16, + number = 12, + year = 1990, + issn = {0098-5589}, + pages = {1402--1411}, + doi = {10.1109/32.62448}, + publisher = pub-ieee, + address = pub-ieee:adr, + acknowledgement={none}, + bibkey = {hamlet.ea:partition:1990} +} + +@TechReport{ sharangpani.ea:statistical:1994, + language = {USenglish}, + author = {H. P. Sharangpani and Ph. D. M. I. Barton }, + title = {Statistical Analysis of Floating Point Flaw in the + Pentium$^{TM}$ Processor}, + institution = {Intel Corporation}, + month = nov, + year = 1994, + keywords = {pentium; flaw; FDIV; bug}, + url = {http://www.intel.com/support/processors/pentium/fdiv/wp/}, + abstract = {A subtle flaw in the hardware divide unit of the Pentium + TM Processor was discovered by Intel. Subsequently, a + characterization of its impact to the end-user application + base was conducted. The flaw is rare and data-dependent, + and causes a reduction in precision of the divide + instruc-tion and certain other operations in certain cases. + The significance of the flaw depends upon (a) the rate of + use of specific FP instructions in the Pentium TM CPU, (b) + the data fed to them, (c) the way in which the results of + these instructions are propagated into further computation + in the application; and (d) the way in which the final + results of the application are interpreted. The thorough + and detailed characterization of the flaw and the + subsequent investigations of its impact on applications + through elaborate surveys, analyses and empirical + observation lead us to the overall conclusion that the flaw + is of no concern to the vast majority of users of Pentium + processor based systems. A few users of applications in the + scientific/engineering and financial engineering fields who + require unusual precision and invoke millions of divides + per day may need t o employ either an updated Pen t ium + processor without the flaw or a software workaround.}, + acknowledgement={none}, + bibkey = {sharangpani.ea:statistical:1994} +} + +@InProceedings{ paulson:formulation:1988, + author = {Lawrence C. Paulson}, + title = {A formulation of the simple theory of types (for + Isabelle).}, + booktitle = {Conference on Computer Logic}, + year = 1988, + acknowledgement={none}, + pages = {246--274}, + doi = {10.1007/3-540-52335-9_58}, + crossref = {martin-lof.ea:international:1990} +} + +@Proceedings{ martin-lof.ea:international:1990, + editor = {Per Martin-L{\"o}f and Grigori Mints}, + title = {International Conference on Computer Logic, Tallinn, USSR, + December 1988, Proceedings}, + booktitle = {Conference on Computer Logic}, + publisher = pub-springer, + series = lncs, + address = pub-springer:adr, + acknowledgement={none}, + volume = 417, + year = 1990, + isbn = {3-540-52335-9} +} + +@Article{ bernot.ea:software:1991, + author = {Gilles Bernot and Marie Claude Gaudel and Bruno Marre}, + title = {Software testing based on formal specifications: a theory + and a tool}, + journal = {Softw. Eng. J.}, + volume = 6, + number = 6, + year = 1991, + issn = {0268-6961}, + pages = {387--405}, + publisher = {Michael Faraday House}, + address = {Herts, UK, UK} +} + +@Article{ chadwick.ea:permis:2008, + author = {David Chadwick and Gansen Zhao and Sassa Otenko and Romain + Laborde and Linying Su and Tuan Anh Nguyen}, + title = {{PERMIS}: a modular authorization infrastructure}, + journal = {Concurrency and Computation: Practice \& Experience}, + volume = 20, + number = 11, + year = 2008, + issn = {1532-0626}, + pages = {1341--1357}, + doi = {10.1002/cpe.v20:11}, + publisher = pub-wiley, + address = pub-wiley:adr, + abstract = {Authorization infrastructures manage privileges and render + access control decisions, allowing applications to adjust + their behavior according to the privileges allocated to + users. This paper describes the PERMIS role-based + authorization infrastructure along with its conceptual + authorization, access control, and trust models. PERMIS has + the novel concept of a credential validation service, which + verifies a user's credentials prior to access control + decision-making and enables the distributed management of + credentials. PERMIS also supports delegation of authority; + thus, credentials can be delegated between users, further + decentralizing credential management. Finally, PERMIS + supports history-based decision-making, which can be used + to enforce such aspects as separation of duties and + cumulative use of resources. Details of the design and the + implementation of PERMIS are presented along with details + of its integration with Globus Toolkit, Shibboleth, and + GridShib. A comparison of PERMIS with other authorization + and access control implementations is given, along with + suggestions where future research and development are still + needed.} +} + +@Article{ altenhofen.ea:asms:2008, + author = {Michael Altenhofen and Andreas Friesen and Jens Lemcke}, + title = {{ASMs} in Service Oriented Architectures}, + journal = j-ucs, + volume = 14, + number = 12, + year = 2008, + pages = {2034--2058}, + abstract = {We give a survey on work we did in the past where we have + successfully applied the ASM methodology to provide + abstract models for a number of problem areas that are + commonly found in Service Oriented Architectures (SOA). In + particular, we summarize our work on (1) service behavior + mediation, (2) service discovery, and (3) service + composition, showing that the corresponding solutions can + be described as variations of a fundamental abstract + processing model{\^a}the Virtual Provider.}, + keywords = {process mediation, service discovery, workflow composition + } +} + +@Book{ borger.ea:abstract:2003, + author = {Egon B{\"o}rger and Robert F. St{\"a}rk}, + title = {Abstract State Machines: A Method for High-Level System + Design and Analysis}, + publisher = pub-springer, + address = pub-springer:adr, + isbn = {3-540-00702-4}, + abstract = {This book introduces into a new software engineering + method which guides the development of systems seamlessly + from requirements capture to coding. The method bridges the + gap between understanding and formulating real-world + problems by humans and the deployment of their solutions by + code-executing machines on changing platforms.It covers + design and analysis for both hardware and software + systems.It has a scientific foundation and improves current + industrial practice by linking the descriptions at the + successive stages of the system development cycle in a + coherent conceptual framework to keep the system models at + related levels synchronized.The method supports the + integration of standard design, analysis and documentation + techniques for model reuse (by abstraction), validation (by + simulation and high-level testing), verification (by + reasoning) and maintenance (by structured documentation). + }, + year = 2003 +} + +@InProceedings{ altenhofen.ea:concurrent:2009, + author = {Michael Altenhofen and Egon B{\"o}rger}, + title = {Concurrent Abstract State Machines and {$^+\mathit{CAL}$} + Programs}, + pages = {1--17}, + doi = {10.1007/978-3-642-03429-9_1}, + abstract = {We apply the ASM semantics framework to define the await + construct in the context of concurrent ASMs. We link + {$^+\mathit{CAL}$} to concurrent control state ASMs with + turbo ASM submachines.}, + booktitle = {Recent Trends in Algebraic Development Techniques}, + series = s-lncs, + publisher = pub-springer, + address = pub-springer:adr, + year = 2009 +} + +@Article{ farahbod.ea:coreasm:2007, + author = {Roozbeh Farahbod and Vincenzo Gervasi and Uwe Gl{\"a}sser}, + title = {{CoreASM}: An Extensible {ASM} Execution Engine}, + journal = {Fundamenta Informaticae}, + publisher = {IOS Press}, + volume = 77, + number = {1-2}, + year = 2007, + issn = {0169-2968}, + pages = {71--103}, + ee = {http://iospress.metapress.com/openurl.asp?genre=article{\&}issn=0169-2968{\&}volume=77{\&}issue=1{\&}spage=71} + , + abstract = {In this paper we introduce a new research effort in making + abstract state machines (ASMs) executable. The aim is to + specify and implement an execution engine for a language + that is as close as possible to the mathematical definition + of pure ASMs. The paper presents the general architecture + of the engine, together with a high-level description of + the extensibility mechanisms that are used by the engine to + accommodate arbitrary backgrounds, scheduling policies, and + new rule forms.}, + keywords = {CoreASM, Abstract state machines, Specification languages, + Executable specification} +} + +@Article{ knuth:literate:1984, + author = {Donald E. Knuth}, + title = {Literate Programming}, + journal = {The Computer Journal}, + volume = 27, + number = 2, + year = 1984, + pages = {97--111}, + doi = {10.1093/comjnl/27.2.97}, + publisher = {Oxford University Press}, + address = {Oxford, UK}, + issn = {0010-4620}, + abstract = {The author and his associates have been experimenting for + the past several years with a programming language and + documentation system called WEB. This paper presents WEB by + example, and discusses why the new system appears to be an + improvement over previous ones.} +} + +@Article{ forgy:rete:1982, + author = {Charles L. Forgy}, + title = {Rete: A Fast Algorithm for the Many Patterns/Many Objects + Match Problem}, + journal = {Artificial Intelligence}, + volume = 19, + number = 1, + year = 1982, + pages = {17--37}, + issn = {0004-3702}, + abstract = {The Rete Match Algorithm is an efficient method for + comparing a large collection of patterns to a large + collection of objects. It finds all the objects that match + each pattern. The algorithm was developed for use in + production system interpreters, and it has been used for + systems containing from a few hundred to more than a + thousand patterns and objects. This article presents the + algorithm in detail. It explains the basic concepts of the + algorithm, it describes pattern and object representations + that are appropriate for the algorithm, and it describes + the operations performed by the pattern matcher. }, + doi = {10.1016/0004-3702(82)90020-0} +} + +@InProceedings{ burrows:chubby:2006, + author = {Mike Burrows}, + title = {The Chubby lock service for loosely-coupled distributed + systems}, + booktitle = {OSDI '06: Proceedings of the 7th symposium on Operating + systems design and implementation}, + year = 2006, + isbn = {1-931971-47-1}, + pages = {335--350}, + publisher = {\acs{usenix} Association}, + location = {Seattle, Washington}, + address = {Berkeley, CA, USA}, + abstract = {We describe our experiences with the Chubby lock service, + which is intended to provide coarse-grained locking as well + as reliable (though low-volume) storage for a + loosely-coupled distributed system. Chubby provides an + interface much like a distributed file system with advisory + locks, but the design emphasis is on availability and + reliability, as opposed to high performance. Many instances + of the service have been used for over a year, with several + of them each handling a few tens of thousands of clients + concurrently. The paper describes the initial design and + expected use, compares it with actual use, and explains how + the design had to be modified to accommodate the + differences.} +} + +@InProceedings{ mccarthy.ea:architecture:1989, + author = {Dennis McCarthy and Umeshwar Dayal}, + title = {The architecture of an active database management system}, + booktitle = {SIGMOD '89: Proceedings of the 1989 ACM SIGMOD + international conference on Management of data}, + year = 1989, + isbn = {0-89791-317-5}, + pages = {215--224}, + location = {Portland, Oregon, United States}, + doi = {10.1145/67544.66946}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {he HiPAC project is investigating active, time-constrained + database management. An active DBMS is one which + automatically executes specified actions when specified + conditions arise. HiPAC has proposed Event-Condition-Action + (ECA) rules as a formalism for active database + capabilities. We have also developed an execution model + that specifies how these rules are processed in the context + of database transactions. The additional functionality + provided by ECA rules makes new demands on the design of an + active DBMS. In this paper we propose an architecture for + an active DBMS that supports ECA rules. This architecture + provides new forms of interaction, in support of ECA rules, + between application programs and the DBMS. This leads to a + new paradigm for constructing database applications.} +} + +@InProceedings{ carioni.ea:scenario-based:2008, + author = {Alessandro Carioni and Angelo Gargantini and Elvinia + Riccobene and Patrizia Scandurra}, + title = {A Scenario-Based Validation Language for {ASMs}}, + booktitle = {ABZ}, + year = 2008, + pages = {71--84}, + doi = {10.1007/978-3-540-87603-8_7}, + abstract = {This paper presents the AValLa language, a domain-specific + modelling language for scenario-based validation of ASM + models, and its supporting tool, the AsmetaV validator. + They have been developed according to the model-driven + development principles as part of the asmeta (ASM + mETAmodelling) toolset, a set of tools around ASMs. As a + proof-of-concepts, the paper reports the results of the + scenario-based validation for the well-known LIFT control + case study.}, + crossref = {borger.ea:abstract:2008} +} + +@Proceedings{ borger.ea:abstract:2008, + editor = {Egon B{\"o}rger and Michael J. Butler and Jonathan P. + Bowen and Paul Boca}, + title = {Abstract State Machines, B and Z, First International + Conference, ABZ 2008, London, UK, September 16-18, 2008. + Proceedings}, + booktitle = {ABZ}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 5238, + year = 2008, + isbn = {978-3-540-87602-1} +} + +@Article{ decandia.ea:dynamo:2007, + author = {Giuseppe DeCandia and Deniz Hastorun and Madan Jampani and + Gunavardhan Kakulapati and Avinash Lakshman and Alex + Pilchin and Swaminathan Sivasubramanian and Peter Vosshall + and Werner Vogels}, + title = {{Dynamo}: {Amazon's} highly available key-value store}, + journal = {ACM SIGOPS Operating Systems Review}, + volume = 41, + number = 6, + year = 2007, + issn = {0163-5980}, + pages = {205--220}, + doi = {10.1145/1323293.1294281}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {Reliability at massive scale is one of the biggest + challenges we face at Amazon.com, one of the largest + e-commerce operations in the world; even the slightest + outage has significant financial consequences and impacts + customer trust. The Amazon.com platform, which provides + services for many web sites worldwide, is implemented on + top of an infrastructure of tens of thousands of servers + and network components located in many datacenters around + the world. At this scale, small and large components fail + continuously and the way persistent state is managed in the + face of these failures drives the reliability and + scalability of the software systems. + + This paper presents the design and implementation of + Dynamo, a highly available key-value storage system that + some of Amazon's core services use to provide an + "always-on" experience. To achieve this level of + availability, Dynamo sacrifices consistency under certain + failure scenarios. It makes extensive use of object + versioning and application-assisted conflict resolution in + a manner that provides a novel interface for developers to + use.} +} + +@InProceedings{ crampton.ea:secondary:2006, + author = {Jason Crampton and Wing Leung and Konstantin Beznosov}, + title = {The secondary and approximate authorization model and its + application to {Bell-LaPadula} policies}, + booktitle = {SACMAT '06: Proceedings of the eleventh ACM symposium on + Access control models and technologies}, + year = 2006, + isbn = {1-59593-353-0}, + pages = {111--120}, + location = {Lake Tahoe, California, USA}, + doi = {10.1145/1133058.1133075}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {We introduce the concept, model, and policy-specific + algorithms for inferring new access control decisions from + previous ones. Our secondary and approximate authorization + model (SAAM) defines the notions of primary vs. secondary + and precise vs. approximate authorizations. Approximate + authorization responses are inferred from cached primary + responses, and therefore provide an alternative source of + access control decisions in the event that the + authorization server is unavailable or slow. The ability to + compute approximate authorizations improves the reliability + and performance of access control sub-systems and + ultimately the application systems themselves.The operation + of a system that employs SAAM depends on the type of access + control policy it implements. We propose and analyze + algorithms for computing secondary authorizations in the + case of policies based on the Bell-LaPadula model. In this + context, we define a dominance graph, and describe its + construction and usage for generating secondary responses + to authorization requests. Preliminary results of + evaluating SAAM BLP algorithms demonstrate a 30\% increase + in the number of authorization requests that can be served + without consulting access control policies.} +} + +@InProceedings{ turkmen.ea:performance:2008, + author = {Fatih Turkmen and Bruno Crispo}, + title = {Performance evaluation of {XACML} {PDP} implementations}, + booktitle = {SWS '08: Proceedings of the 2008 ACM workshop on Secure + web services}, + year = 2008, + isbn = {978-1-60558-292-4}, + pages = {37--44}, + location = {Alexandria, Virginia, USA}, + doi = {10.1145/1456492.1456499}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {eXtensible Access Control Markup Language (XACML), an + OASIS standard, is the most widely used policy specifica- + tion language for access control. Its simplicity in syntax + and strength in coverage makes it suitable for diverse en- + vironments such as Service Oriented Architectures (SOAs) + and P2P systems. There are different implementations of + XACML available. Some of these implementations are open + source and some others are proprietary. In this work we + intended to shed some lights to the performance issues of + XACML engines. We tested 3 open source XACML + implementations with different policy/request settings. Our + experiments revealed some important points to be taken into + consideration when deploying an XACML based access control + system. Besides, our results can be used as hints by policy + writers and system developers for deploying efficient + authorization services.} +} + +@InProceedings{ chen.ea:constraint:2006, + author = {Hong Chen and Ninghui Li}, + title = {Constraint generation for separation of duty}, + booktitle = {SACMAT '06: Proceedings of the eleventh ACM symposium on + Access control models and technologies}, + year = 2006, + isbn = {1-59593-353-0}, + pages = {130--138}, + location = {Lake Tahoe, California, USA}, + doi = {10.1145/1133058.1133077}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {Separation of Duty (SoD) is widely recognized to be a + fundamental principle in computer security. A Static SoD + (SSoD) policy states that in order to have all permissions + necessary to complete a sensitive task, the cooperation of + at least a certain number of users is required. In + Role-Based Access Control (RBAC), Statically Mutually + Exclusive Role (SMER) constraints are used to enforce SSoD + policies. This paper studies the problem of generating sets + of constraints that (a) enforce a set of SSoD policies, (b) + are compatible with the existing role hierarchy, and (c) + are minimal in the sense that there is no other constraint + set that is less restrictive and satisfies (a) and (b).} +} + +@InProceedings{ schaad.ea:case:2005, + author = {Andreas Schaad and Pascal Spadone and Helmut Weichsel}, + title = {A case study of separation of duty properties in the + context of the Austrian {``eLaw''} process.}, + booktitle = {SAC '05: Proceedings of the 2005 ACM symposium on Applied + computing}, + year = 2005, + isbn = {1-58113-964-0}, + pages = {1328--1332}, + location = {Santa Fe, New Mexico}, + doi = {10.1145/1066677.1066976}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {Over the last few years rapid progress has been made in + moving from conceptual studies, "whitepapers" and + initiatives to the actual deployment of e-Government + systems [13]. In this paper we present the case study of an + existing e-Government system (eLaw) which already supports + key legislative processes in the country of Austria1. The + study has been performed in the context of the EU FP6 + project "eJustice".We present a detailed system and + workflow representation referring to the example process of + changing a federal law in Austria. Since such processes and + their results, i.e. the laws of a country, have an enormous + impact on society, they need to be secured against external + and internal alteration, be it inadvertent or malicious. + This is even more important in the electronic world.Instead + of discussing the obvious security requirements like virus + protection or network-level access control, our focus is on + an often neglected form of organisational security and + control properties called separation of duties. We will + analyse and discuss a set of these in terms of the + described eLaw process.} +} + +@InProceedings{ evered.ea:case:2004, + author = {Mark Evered and Serge B{\"o}geholz}, + title = {A case study in access control requirements for a Health + Information System}, + booktitle = {ACSW Frontiers '04: Proceedings of the second workshop on + Australasian information security, Data Mining and Web + Intelligence, and Software Internationalisation}, + year = 2004, + pages = {53--61}, + location = {Dunedin, New Zealand}, + publisher = {Australian Computer Society, Inc.}, + address = {Darlinghurst, Australia, Australia}, + abstract = {We present a detailed examination of the access + constraints for a small real-world Health Information + System with the aim of achieving minimal access rights for + each of the involved principals. We show that, even for + such a relatively simple system, the resulting constraints + are very complex and cannot be expressed easily or clearly + using the static per-method access control lists generally + supported by component-based software. We derive general + requirements for the expressiveness of access constraints + and propose criteria for a more suitable access control + mechanism in the context of component-based systems. We + describe a two-level mechanism which can fulfil these + criteria.} +} + +@Article{ kapsalis.ea:dynamic:2006, + title = {A dynamic context-aware access control architecture for + e-services}, + journal = {Computers \& Security}, + volume = 25, + number = 7, + pages = {507--521}, + year = 2006, + issn = {0167-4048}, + doi = {10.1016/j.cose.2006.05.004}, + author = {Vassilis Kapsalis and Loukas Hadellis and Dimitris Karelis + and Stavros Koubias}, + keywords = {e-Services, Access control, Web services, Context-aware, + Authorization, UML}, + abstract = { The universal adoption of the Internet and the emerging + web services technologies constitutes the infrastructure + that enables the provision of a new generation of + e-services and applications. However, the provision of + e-services through the Internet imposes increased risks, + since it exposes data and sensitive information outside the + client premises. Thus, an advanced security mechanism has + to be incorporated, in order to protect this information + against unauthorized access. In this paper, we present a + context-aware access control architecture, in order to + support fine-grained authorizations for the provision of + e-services, based on an end-to-end web services + infrastructure. Access permissions to distributed web + services are controlled through an intermediary server, in + a completely transparent way to both clients and protected + resources. The access control mechanism is based on a + Role-Based Access Control (RBAC) model, which incorporates + dynamic context information, in the form of context + constraints. Context is dynamically updated and provides a + high level of abstraction of the physical environment by + using the concepts of simple and composite context + conditions. Also, the paper deals with implementation + issues and presents a system that incorporates the proposed + access control mechanism in a web services infrastructure + that conform to the OPC XML-DA specification.} +} + +@InProceedings{ anderson:comparison:2006, + author = {Anne H. Anderson}, + title = {A comparison of two privacy policy languages: {EPAL} and + {XACML}}, + booktitle = {SWS '06: Proceedings of the 3rd ACM workshop on Secure web + services}, + year = 2006, + isbn = {1-59593-546-0}, + pages = {53--60}, + location = {Alexandria, Virginia, USA}, + doi = {10.1145/1180367.1180378}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {Current regulatory requirements in the U.S. and other + countries make it increasingly important for Web Services + to be able to enforce and verify their compliance with + privacy policies. Structured policy languages can play a + major role by supporting automated enforcement of policies + and auditing of access decisions. This paper compares two + policy languages that have been developed for use in + expressing directly enforceable privacy policies -- the + Enterprise Privacy Authorization Language (EPAL) and the + OASIS Standard eXtensible Access Control Markup Language + (XACML), together with its standard privacy profile.} +} + +@Book{ rankl.ea:smart-card:2003, + author = {Wolfgang Rankl and Wolfgang Effing}, + title = {Smart Card Handbook}, + year = 2003, + isbn = 9780470856680, + doi = {10.1002/047085670X}, + publisher = pub-wiley, + address = pub-wiley:adr, + abstract = {The boom in smart card technology reflects the medium's + broad solutions potential. Embedded with a sophisticated + microprocessor, smart cards offer unparalleled memory + capacity and data encryption capability. From providing + secure access to the Internet and mobile radio networks to + performing security-sensitive financial transactions in + credit card schemes, the Electronic Purse and Pay TV + systems, smart card technology is now a multi-billion + dollar industry. The Smart Card Handbook presents a + state-of-the-art overview of the technology from + fundamental information processing through design, + manufacture and operation of smart card schemes. Written in + a highly accessible style the Smart Card Handbook meets the + needs of both novice and expert. This is an essential + reference for computer and electronics engineers and + students in microchip design and security system + development. For professionals developing smart card + products, this unique reference will provide an invaluable + insight to all the facets of this sophisticated + technology.} +} + +@Book{ graham.ea:concrete:1989, + title = {Concrete Mathematics}, + author = {Roland L. Graham and Donald E. Knuth and Oren Patashnik}, + isbn = {0-201-14236-8}, + publisher = pub-aw, + address = pub-aw:adr, + pages = 578, + year = 1989 +} + +@Manual{ iso:ansi-cpp:1998, + bibkey = {iso:ansi-cpp:1998}, + abstract = {Specifies requirements for implementations of the C++ + programming language. This International Standard also + defines C++. Other requirements and relaxations of the + first requirement appear at various places within this + standard.}, + note = {Doc. No. ISO/IEC 14882-1998}, + title = {International Standard: Programming languages -C++ }, + organization = {ANSI/ISO}, + year = 1998, + month = sep, + publisher = {The American National Standards Institute}, + address = {New York} +} + +@Book{ reid:thinking:1990, + abstract = {The book is a result of Glenn Reid's years trying to teach + people to write PostScript programs, during which he + discovered that people tended to try to make PostScript + "look like" other programming languages they already knew. + There is even a chapter in this book entitled "PostScript + Is Not Like C", because it is really a very different + language, and one must learn to "think" in PostScript in + order to be a good programmer. }, + author = {Glenn C. Reid}, + title = {Thinking in Postscript}, + publisher = pub-aw, + address = pub-aw:adr, + month = sep, + year = 1990, + language = {USenglish}, + keywords = {Postscript}, + public = {yes}, + isbn = {0-201-52372-8}, + url = {http://www.rightbrain.com/download/books/ThinkingInPostScript.pdf} + +} + +@Book{ knuth:seminumerical:1981, + author = {Donald E. Knuth}, + series = {The Art of Computer Programming}, + volume = 2, + title = {Seminumerical Algorithms}, + edition = {second}, + isbn = {0-201-03822-6}, + year = 1981, + publisher = pub-aw, + address = pub-aw:adr +} + +@Book{ wegener:complexity:1987, + address = {Stuttgart}, + author = {Ingo Wegener}, + language = {USenglish}, + public = {yes}, + publisher = {John Wiley \& Sons Ltd., and B.G. Teubner}, + title = {The Complexity of Boolean Functions}, + url = {\url{http://ls2-www.informatik.uni-dortmund.de/monographs/bluebook/}} + , + year = 1987, + cover = {1987/wegener:complexity:1987.png}, + timestamp = 948019205 +} + +@Article{ stallman:societal:1997, + author = {Richard Stallman}, + title = {Societal Dimensions: The Right to Read}, + journal = j-cacm, + volume = 40, + number = 2, + pages = {85--87}, + month = feb, + year = 1997, + coden = {CACMA2}, + issn = {0001-0782}, + url = {http://www.acm.org/pubs/citations/journals/cacm/1997-40-2/p85-stallman/} + , + localurl = {papers/1997/p85-stallman.pdf}, + note = {\url{http://www.gnu.org/}}, + acknowledgement=ack-nhfb, + classification= {C0230 (Economic, social and political aspects of + computing); C0310D (Computer installation management)}, + keywords = {Clinton administration; Clipper chip; computer crime; + design; industrial property; key-escrow proposals; legal + aspects; management; pirates; right to read; security; + Software Protection Authority; Software Publisher's + Association}, + subject = {{\bf K.1} Computing Milieux, THE COMPUTER INDUSTRY. {\bf + K.5.0} Computing Milieux, LEGAL ASPECTS OF COMPUTING, + General. {\bf K.4.0} Computing Milieux, COMPUTERS AND + SOCIETY, General.}, + treatment = {G General Review} +} + +@Article{ stallman:societal:1997-b, + author = {Richard Stallman}, + title = {Societal Dimensions: The Right to Read}, + journal = j-cacm, + volume = 40, + number = 2, + pages = {85--87}, + month = feb, + year = 1997, + issn = {0001-0782}, + classification= {C0230 (Economic, social and political aspects of + computing); C0310D (Computer installation management)}, + keywords = {Clinton administration; Clipper chip; computer crime; + design; industrial property; key-escrow proposals; legal + aspects; management; pirates; right to read; security; + Software Protection Authority; Software Publisher's + Association}, + subject = {{\bf K.1} Computing Milieux, THE COMPUTER INDUSTRY. {\bf + K.5.0} Computing Milieux, LEGAL ASPECTS OF COMPUTING, + General. {\bf K.4.0} Computing Milieux, COMPUTERS AND + SOCIETY, General.}, + treatment = {G General Review} +} + +@Article{ dalton.ea:securing:2001, + bibkey = {dalton.ea:securing:2001}, + author = {Chris Dalton and Tse Huong Choo}, + title = {An operating system approach to securing e--services}, + journal = j-cacm, + volume = 44, + number = 2, + pages = {58--64}, + month = feb, + abstract = {This article looks at some of the problems surrounding + application compromise in more detail and puts forward our + approach to solving these problems. We do not attempt to + guarantee that the application services are bug-free (a + difficult problem). Instead, we have found that the effects + of this type of attack, and quite a few others, can be + usefully mitigated by adding specific properties to the OSs + used to host those applications. + + Specifically, we look at Trusted Linux, HP Laboratories' + implementation of a secure version of Linux, which we + believe is an ideal platform for e-service application + hosting.}, + year = 2001, + issn = {0001-0782} +} + +@Article{ cornea-hasegan:proving:1998, + language = {USenglish}, + abstract = {The work presented in this paper was initiated as part of + a study on software alternatives to the hardware + implementations of floating-point operations such as divide + and square root. The results of the study proved the + viability of software implementations, and showed that + certain proposed algorithms are comparable in performance + to current hardware implementations. This paper discusses + two components of that study: + + (1) A methodology for proving the IEEE correctness of the + result of iterative algorithms that implement the + floating-point square root, divide, or remainder operation. + (2) Identification of operands for the floating-point + divide and square root operations that lead to results + representing difficult cases for IEEE rounding. + + Some general properties of floating-point computations are + presented first. The IEEE correctness of the floating-point + square root operation is discussed next. We show how + operands for the floating-point square root that lead to + difficult cases for rounding can be generated, and how to + use this knowledge in proving the IEEE correctness of the + result of iterative algorithms that calculate the square + root of a floating-point number. Similar aspects are + analyzed for the floating-point divide operation, and we + present a method for generating difficult cases for + rounding. In the case of the floating-point divide + operation, however, it is more difficult to use this + information in proving the IEEE correctness of the result + of an iterative algorithm than it is for the floating-point + square root operation. We examine the restrictions on the + method used for square root. Finally, we present possible + limitations due to the finite exponent range.}, + journal = {Intel Technology Journal}, + volume = {Q2}, + year = 1998, + title = {Proving the {IEEE} Correctness of Iterative Floating-Point + Square Root, Divide, and Remainder Algorithms }, + author = {Marius Cornea-Hasegan}, + keywords = {floating-point, IEEE correctness, divide, square root, + remainder}, + url = {\url{http://developer.intel.com/technology/itj/q21998/articles/art_3.htm}} + +} + +@Article{ edelman:mathematics:1997, + author = {Alan Edelman}, + abstract = {Despite all of the publicity surrounding the Pentium bug + of 1994, the mathematical details of the bug are poorly + understood. We discuss these details and supply a new proof + of the Coe--Tang result that the at-risk divisors have six + consecutive ones in positions 5 through 10. Also, we prove + that the worst-case absolute error for arguments in [1,2) + is on the order of 1e--5. }, + journal = {SIAM}, + title = {The Mathematics of the Pentium Division Bug}, + keywords = {Pentium, SRT division, floating point operations }, + year = 1997, + url = {\url{http://epubs.siam.org/sam-bin/dbq/article/29395}}, + pages = {54--67}, + volume = 39, + number = 1, + public = {yes} +} + +@Article{ oleary.ea:formally:1999, + language = {USenglish}, + abstract = {This paper describes the formal specification and + verification of floating-point arithmetic hardware at the + level of IEEE Standard 754. Floating-point correctness is a + crucial problem: the functionality of Intel's + floating-point hardware is architecturally visible and, + once discovered, floating-point bugs are easily reproduced + by the consumer. We have formally specified and verified + IEEE-compliance of the Pentium{\textregistered} Pro + processor's FADD, FSUB, FMUL, FDIV, FSQRT, and FPREM + operations, as well as the correctness of various + miscellaneous operations including conversion to and from + integers. Compliance was verified against the gate-level + descriptions from which the actual silicon is derived and + on which all traditional pre-silicon dynamic validation is + performed. Our results demonstrate that formal functional + verification of gate-level floating-point designs against + IEEE-level specifications is both feasible and practical. + As far as the authors are aware, this is the first such + demonstration. }, + journal = {Intel Technology Journal}, + volume = {Q1}, + year = 1999, + title = {Formally Verifying {IEEE} Compliance of Floating-Point + Hardware}, + author = {John O'Leary and Xudong Zhao and Rob Gerth and Carl-Johan + H. Seger}, + url = {\url{http://developer.intel.com/technology/itj/q11999/articles/art_5.htm}} + , + keywords = {verification; pentium; FDIV bug; flaw; + floating-point-hardware; floating-point; IEEE compliance; + formal verification; model checking; theorem proving } +} + +@Article{ neubauer:feinheiten:1996, + author = {Marion Neubauer}, + title = {Feinheiten bei wissenschaftlichen {P}ublikationen -- + {M}ikrotypographie-{R}egeln, {T}eil {I}}, + journal = dtk, + year = 1996, + volume = {4/96}, + altvolume = 8, + altnumber = 4, + month = feb, + pages = {23--40}, + annote = bretter, + localurl = {papers/1996/dtk96_4_neubauer_feinheiten.pdf}, + url = {\url{http://www.dante.de/dante/DTK/}}, + keywords = {Mikrotypographie, Abk{\"u}rzungen, Akronyme, Einheiten, + Himmelsrichtungen, Anf{\"u}hrungszeichen, Satzzeichen, + Auslassungen, Sonderzeichen, email-Adressen, Ligaturen} +} + +@Article{ neubauer:feinheiten:1997, + author = {Marion Neubauer}, + title = {Feinheiten bei wissenschaftlichen {P}ublikationen -- + {M}ikrotypographie-{R}egeln, {T}eil {II}}, + journal = dtk, + year = 1997, + volume = {1/97}, + altvolume = 9, + altnumber = 1, + month = may, + pages = {25--44}, + url = {\url{http://www.dante.de/dante/DTK/}}, + localurl = {papers/1997/dtk97_1_neubauer_feinheiten.pdf}, + annote = bretter, + keywords = {Mikrotypographie, Zahlen, Ziffern, Nummern, Striche, + Klammern, geschachtelte Klammern, Wortzwischenr{\"a}ume, + Abst{\"a}nde, mathematischer Satz, Worttennungen, + Zeilenumbruch} +} + +@Article{ szpiro:mathematics:2003, + author = {George Szpiro}, + url = {http://www.nature.com/cgi-taf/DynaPage.taf?file=/nature/journal/v424/n6944/full/424012a_fs.html} + , + journal = {Nature}, + pages = {12--13}, + month = jul, + year = 2003, + number = 424, + title = {Mathematics: Does the proof stack up?}, + acknowledgement={none}, + bibkey = {szpiro:mathematics:2003} +} + +@Article{ venet:practical:2008, + author = {Arnaud Venet}, + title = {A practical approach to formal software verification by + static analysis}, + journal = {Ada Lett.}, + volume = {XXVIII}, + number = 1, + year = 2008, + issn = {1094-3641}, + pages = {92--95}, + doi = {10.1145/1387830.1387836}, + address = pub-acm:adr, + publisher = pub-acm, + abstract = {Static analysis by Abstract Interpretation is a promising + way for conducting formal verification of large software + applications. In spite of recent successes in the + verification of aerospace codes, this approach has limited + industrial applicability due to the level of expertise + required to engineer static analyzers. In this paper we + investigate a pragmatic approach that consists of focusing + on the most critical components of the application first. + In this approach the user provides a description of the + usage of functionalities in the critical component via a + simple specification language, which is used to drive a + fully automated static analysis engine. We present + experimental results of the application of this approach to + the verification of absence of buffer overflows in a + critical library of the OpenSSH distribution.} +} + +@InProceedings{ balser.ea:formal:2000, + author = {Michael Balser and Wolfgang Reif and Gerhard Schellhorn + and Kurt Stenzel and Andreas Thums}, + title = {Formal System Development with {KIV}}, + booktitle = {FASE}, + year = 2000, + pages = {363--366}, + doi = {10.1007/3-540-46428-X_25}, + crossref = {maibaum:fundamental:2000}, + abstract = {KIV is a tool for formal systems development. It can be + employed, e.g., 1) for the development of safety critical + systems from formal requirements specifications to + executable code, including the verification of safety + requirements and the correctness of implementations, 2) for + semantical foundations of programming languages from a + specification of the semantics to a verified compiler, 3) + for building security models and architectural models as + they are needed for high level ITSEC [7] or CC [1] + evaluations. } +} + +@Proceedings{ maibaum:fundamental:2000, + editor = {T. S. E. Maibaum}, + title = {Fundamental Approaches to Software Engineering, Third + Internationsl Conference, FASE 2000, Held as Part of the + European Joint Conferences on the Theory and Practice of + Software, ETAPS 2000, Berlin, Germany, March 25 - April 2, + 2000, Proceedings}, + booktitle = {FASE}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 1783, + year = 2000, + isbn = {3-540-67261-3} +} + +@InProceedings{ castillo:asm:2001, + author = {Giuseppe Del Castillo}, + title = {The {ASM} Workbench: A Tool Environment for Computer-Aided + Analysis and Validation of Abstract State Machine Models + Tool Demonstration}, + booktitle = {TACAS}, + year = 2001, + pages = {578--581}, + doi = {10.1007/3-540-45319-9_40}, + abstract = {Gurevich{\^a}s Abstract State Machines (ASMs) constitute a + high-level state-based modelling language, which has been + used in a wide range of applications. The ASM Workbench is + a comprehensive tool environment supporting the development + and computer-aided analysis and validation of ASM models. + It is based on a typed version of the ASM language, called + ASM-SL, and includes features for type-checking, + simulation, debugging, and verification of ASM models.}, + crossref = {margaria.ea:tools:2001} +} + +@Proceedings{ margaria.ea:tools:2001, + editor = {Tiziana Margaria and Wang Yi}, + title = {Tools and Algorithms for the Construction and Analysis of + Systems, 7th International Conference, TACAS 2001 Held as + Part of the Joint European Conferences on Theory and + Practice of Software, ETAPS 2001 Genova, Italy, April 2-6, + 2001, Proceedings}, + booktitle = {TACAS}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 2031, + year = 2001, + isbn = {3-540-41865-2} +} + +@Article{ gurevich.ea:semantic:2005, + title = {Semantic essence of {AsmL}}, + journal = {Theoretical Computer Science}, + volume = 343, + number = 3, + pages = {370--412}, + year = 2005, + note = {Formal Methods for Components and Objects}, + issn = {0304-3975}, + doi = {10.1016/j.tcs.2005.06.017}, + author = {Yuri Gurevich and Benjamin Rossman and Wolfram Schulte}, + keywords = {Abstract state machine,Executable specification language}, + abstract = { The Abstract State Machine Language, AsmL, is a novel + executable specification language based on the theory of + Abstract State Machines. AsmL is object-oriented, provides + high-level mathematical data-structures, and is built + around the notion of synchronous updates and finite choice. + AsmL is fully integrated into the .NET framework and + Microsoft development tools. In this paper, we explain the + design rationale of AsmL and provide static and dynamic + semantics for a kernel of the language.} +} + +@Article{ gargantini.ea:metamodel-based:2008, + author = {Angelo Gargantini and Elvinia Riccobene and Patrizia + Scandurra}, + title = {A Metamodel-based Language and a Simulation Engine for + Abstract State Machines}, + journal = j-ucs, + volume = 14, + number = 12, + year = 2008, + pages = {1949--1983}, + abstract = {In this paper, we present a concrete textual notation, + called AsmetaL, and a general-purpose simulation engine, + called AsmetaS, for Abstract State Machine (ASM) + specifications. They have been developed as part of the + ASMETA (ASMs mETAmodelling) toolset, which is a set of + tools for ASMs based on the metamodelling approach of the + Model-driven Engineering. We briefly present the ASMETA + framework, and we discuss how the language and the + simulator have been developed exploiting the advantages + offered by the metamodelling approach. We introduce the + language AsmetaL used to write ASM specifications, and we + provide the AsmetaL encoding of ASM specifications of + increasing complexity. We explain the AsmetaS architecture, + its kernel engine, and how the simulator works within the + ASMETA tool set. We discuss the features currently + supported by the simulator and how it has been validated.} +} + +@Manual{ schmid:introduction:2001, + author = {Joachim Schmid}, + title = {Introduction to {AsmGofer}}, + year = 2001 +} + +@InProceedings{ miller.ea:czt:2005, + author = {Tim Miller and Leo Freitas and Petra Malik and Mark + Utting}, + title = {{CZT} Support for {Z} Extensions}, + year = 2005, + pages = {227--245}, + doi = {10.1007/11589976_14}, + crossref = {romijn.ea:integrated:2005}, + abstract = {Community Z Tools (CZT) is an integrated framework for the + Z formal specification language. In this paper, we show how + it is also designed to support extensions of Z, in a way + that minimises the work required to build a new Z + extension. The goals of the framework are to maximise + extensibility and reuse, and minimise code duplication and + maintenance effort. To achieve these goals, CZT uses a + variety of different reuse mechanisms, including generation + of Java code from a hierarchy of XML schemas, XML templates + for shared code, and several design patterns for maximising + reuse of Java code. The CZT framework is being used to + implement several integrated formal methods, which add + object-orientation, real-time features and process algebra + extensions to Z. The effort required to implement such + extensions of Z has been dramatically reduced by using the + CZT framework.} +} + +@Proceedings{ romijn.ea:integrated:2005, + editor = {Judi Romijn and Graeme Smith and Jaco van de Pol}, + booktitle = {Integrated Formal Methods (IFM)}, + location = {Eindhoven, The Netherlands}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 3771, + year = 2005, + isbn = {3-540-30492-4} +} + +@TechReport{ ashley.ea:enterprise:2003, + author = {Paul Ashley and Satoshi Hada and G{\"u}nter Karjoth and + Calvin Powers and Matthias Schunter}, + editor = {Calvin Powers and Matthias Schunter}, + title = {Enterprise Privacy Authorization Language ({EPAL} 1.2)}, + institution = {IBM}, + year = 2003, + url = {http://www.zurich.ibm.com/security/enterprise-privacy/epal} + +} + +@TechReport{ cisc:securing:2008, + title = {Securing Cyberspace for the 44th Presidency}, + institution = {Center for Strategic and International Studies (CSIS)}, + month = dec, + year = 2008 +} + +@InProceedings{ wei.ea:authorization:2008, + author = {Qiang Wei and Jason Crampton and Konstantin Beznosov and + Matei Ripeanu}, + title = {Authorization recycling in {RBAC} systems}, + booktitle = {ACM symposium on Access control models and technologies + (SACMAT)}, + year = 2008, + isbn = {978-1-60558-129-3}, + pages = {63--72}, + location = {Estes Park, CO, USA}, + doi = {10.1145/1377836.1377848}, + publisher = pub-acm, + address = pub-acm:adr, + abstract = {As distributed applications increase in size and + complexity, traditional authorization mechanisms based on a + single policy decision point are increasingly fragile + because this decision point represents a single point of + failure and a performance bottleneck. Authorization + recycling is one technique that has been used to address + these challenges. + + This paper introduces and evaluates the mechanisms for + authorization recycling in RBAC enterprise systems. The + algorithms that support these mechanisms allow precise and + approximate authorization decisions to be made, thereby + masking possible failures of the policy decision point and + reducing its load. We evaluate these algorithms + analytically and using a prototype implementation. Our + evaluation results demonstrate that authorization recycling + can improve the performance of distributed access control + mechanisms.} +} + +@Article{ karjoth:access:2003, + author = {G{\"u}nter Karjoth}, + title = {Access control with {IBM} {Tivoli} access manager}, + journal = j-tissec, + publisher = pub-acm, + address = pub-acm:adr, + volume = 6, + number = 2, + year = 2003, + pages = {232--257}, + doi = {10.1145/762476.762479}, + abstract = {Web presence has become a key consideration for the + majority of companies and other organizations. Besides + being an essential information delivery tool, the Web is + increasingly being regarded as an extension of the + organization itself, directly integrated with its operating + processes. As this transformation takes place, security + grows in importance. IBM Tivoli Access Manager offers a + shared infrastructure for authentication and access + management, technologies that have begun to emerge in the + commercial marketplace. This paper describes the + Authorization Service provided by IBM Tivoli Access Manager + for e-business (AM) and its use by AM family members as + well as third-party applications. Policies are defined over + a protected object namespace and stored in a database, + which is managed via a management console and accessed + through an Authorization API. The protected object + namespace abstracts from heterogeneous systems and thus + enables the definition of consistent policies and their + centralized management. ACL inheritance and delegated + management allow these policies to be managed efficiently. + The Authorization API allows applications with their own + access control requirements to decouple authorization logic + from application logic. Policy checking can be externalized + by using either a proxy that sits in front of the Web + servers and application servers or a plug-in that examines + the request. Thus, AM familiy members establish a single + entry point to enforce enterprise policies that regulate + access to corporate data.} +} + +@Book{ heijenoort:from:2002, + abstract = {The fundamental texts of the great classical period in + modern logic, some of them never before available in + English translation, are here gathered together for the + first time. Modern logic, heralded by Leibniz, may be said + to have been initiated by Boole, De Morgan, and Jevons, but + it was the publication in 1879 of Gottlob Frege's + Begriffsschrift that opened a great epoch in the history of + logic by presenting, in full-fledged form, the + propositional calculus and quantification theory. Frege's + book, translated in its entirety, begins the present + volume. The emergence of two new fields, set theory and + foundations of mathematics, on the borders of logic, + mathematics, and philosophy, is depicted by the texts that + follow. Peano and Dedekind illustrate the trend that led to + Principia Mathematica. Burali-Forti, Cantor, Russell, + Richard, and K\"{o}nig mark the appearance of the modern + paradoxes. Hilbert, Russell, and Zermelo show various ways + of overcoming these paradoxes and initiate, respectively, + proof theory, the theory of types, and axiomatic set + theory. Skolem generalizes L\"{o}wenheim's theorem, and he + and Fraenkel amend Zermelo's axiomatization of set theory, + while von Neumann offers a somewhat different system. The + controversy between Hubert and Brouwer during the twenties + is presented in papers of theirs and in others by Weyl, + Bernays, Ackermann, and Kolmogorov. The volume concludes + with papers by Herbrand and by G\"{o}del, including the + latter's famous incompleteness paper. Of the forty-five + contributions here collected all but five are presented in + extenso. Those not originally written in English have been + translated with exemplary care and exactness; the + translators are themselves mathematical logicians as well + as skilled interpreters of sometimes obscure texts. Each + paper is introduced by a note that sets it in perspective, + explains its importance, and points out difficulties in + interpretation. Editorial comments and footnotes are + interpolated where needed, and an extensive bibliography is + included.}, + author = {Jean van Heijenoort}, + howpublished = {Paperback}, + isbn = 0674324498, + keywords = {frege, godel, logic}, + month = {January}, + posted-at = {2006-05-07 22:17:38}, + priority = 2, + publisher = {{Harvard University Press}}, + title = {From Frege to G{\"o}del : A Source Book in Mathematical + Logic, 1879-1931 (Source Books in the History of the + Sciences)}, + year = 2002 +} + +@InProceedings{ kohler.ea:avoiding:2008, + author = {Mathias Kohler and Andreas Schaad}, + title = {Avoiding Policy-based Deadlocks in Business Processes}, + year = 2008, + pages = {709--716}, + doi = {10.1109/ARES.2008.131}, + address = pub-ieee:adr, + publisher = pub-ieee, + abstract = {In the field of business process management, deadlocks + describe a situation where a workflow execution is blocked + and cannot be completed. We speak of policy-based deadlocks + if such a situation is caused by unsatisfiable resource + requirements due to security constraints specified as part + of the business process. In this paper we propose a method + to avoid policy-based deadlocks by analyzing a workflow's + security constraints, determine the minimal required number + of users, and provide an optimal user-activity assignment + for a deadlock-free workflow execution. We will finally + validate our proposed approach by applying it to a + real-world scenario. }, + booktitle = {Third International Conference on Availability, + Reliability and Security (ARES 2008)}, + location = {Technical University of Catalonia, Barcelona , Spain}, + month = mar +} + +@InProceedings{ modersheim.ea:open-source:2009, + author = {Sebastian M{\"o}dersheim and Luca Vigan{\`o}}, + title = {The Open-Source Fixed-Point Model Checker for Symbolic + Analysis of Security Protocols}, + booktitle = {FOSAD}, + year = 2009, + pages = {166--194}, + doi = {10.1007/978-3-642-03829-7_6}, + crossref = {aldini.ea:foundations:2009} +} + +@Proceedings{ aldini.ea:foundations:2009, + editor = {Alessandro Aldini and Gilles Barthe and Roberto Gorrieri}, + title = {Foundations of Security Analysis and Design V, FOSAD + 2007/2008/2009 Tutorial Lectures}, + booktitle = {FOSAD}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 5705, + year = 2009, + isbn = {978-3-642-03828-0}, + doi = {10.1007/978-3-642-03829-7} +} + +@Article{ dolev.ea:security:1981, + author = {D. Dolev and A. C. Yao}, + title = {On the security of public key protocols}, + journal = {Symposium on Foundations of Computer Science}, + volume = 0, + year = 1981, + issn = {0272-5428}, + pages = {350--357}, + doi = {10.1109/SFCS.1981.32}, + publisher = {IEEE Computer Society}, + address = {Los Alamitos, CA, USA} +} + +@InProceedings{ levin.ea:securing:2009, + author = {Timothy E. Levin and Jeffrey S. Dwoskin and Ganesha + Bhaskara and Thuy D. Nguyen and Paul C. Clark and Ruby B. + Lee and Cynthia E. Irvine and Terry Benzel}, + title = {Securing the Dissemination of Emergency Response Data with + an Integrated Hardware-Software Architecture}, + year = 2009, + pages = {133--152}, + doi = {10.1007/978-3-642-00587-9_9}, + crossref = {chen.ea:trusted:2009}, + abstract = {During many crises, access to sensitive emergency-support + information is required to save lives and property. For + example, for effective evacuations first responders need + the names and addresses of non-ambulatory residents. Yet, + currently, access to such information may not be possible + because government policy makers and third-party data + providers lack confidence that today{\^a}s IT systems will + protect their data. Our approach to the management of + emergency information provides first responders with + temporary, transient access to sensitive information, and + ensures that the information is revoked after the + emergency. The following contributions are presented: a + systematic analysis of the basic forms of trusted + communication supported by the architecture; a + comprehensive method for secure, distributed emergency + state management; a method to allow a userspace application + to securely display data; a multifaceted system analysis of + the confinement of emergency information and the secure and + complete revocation of access to that information at the + closure of an emergency.} +} + +@Proceedings{ chen.ea:trusted:2009, + editor = {Liqun Chen and Chris J. Mitchell and Andrew Martin}, + booktitle = PROC # {International Conference on Trusted + Computing (Trust)}, + location = {Trusted Computing, Second International Conference, Trust + 2009, Oxford, UK, April 6-8, 2009, Proceedings}, + series = s-lncs, + publisher = pub-springer, + address = pub-springer:adr, + volume = 5471, + year = 2009, + isbn = {978-3-642-00586-2}, + doi = {10.1007/978-3-642-00587-9} +} + +@Book{ wunder.ea:verteilte:2009, + editor = {Michael Wunder and J{\"u}rgen Grosche}, + title = {Verteilte F{\"u}hrungsinformationssysteme}, + abstract = {R{\"u}ckblick und Sachstand der technologischen Aspekte + bei der Entwicklung verteilter + F{\"u}hrungsinformationssysteme, einer zentralen Aufgabe in + der Bundeswehr sowie bei Beh{\"o}rden und Organisationen + mit Sicherheitsaufgeben (z.B. Polizei, Rettungskr{\"a}fte). + + Vornehmlich Wissenschaftler der Abteilung + Informationstechnik f{\"u}r F{\"u}hrungssysteme des + Forschungsinstituts f{\"u}r Kommunikation, + Informationsverarbeitung und Ergonomie beschreiben + basierend auf einer 40-j{\"a}hrigen Erfahrung in diesem + Anwendungsgebiet Konzepte und Einzelaspekte bei der + Gestaltung von F{\"u}hrungsinformationssystemen. + Reflektiert werden aktuelle Problembereiche bei der + Vernetzung unterschiedlicher Systeme, einer der derzeit + gr{\"o}{\ss}ten Herausforderungen bei der Neugestaltung der + Abl{\"a}ufe und Systeme in der Bundeswehr und in verwandten + Einrichtungen. Dazu werden Informationsstrukturen und + Prozesse untersucht, Systemarchitekturen ausgewertet und + kombiniert sowie Laborstudien und Feldversuche beschrieben. + + In ca. 25 Beitr{\"a}gen wird eine L{\"u}cke in der + verf{\"u}gbaren Literatur geschlossen, die der Vielzahl von + Entwicklern und Anwendern einen Einblick in die aktuelle + Lage und die zuk{\"u}nftigen Gestaltungsm{\"o}glichkeiten bietet.}, + isbn = {978-3-642-00508-4}, + language = {German}, + doi = {10.1007/978-3-642-00509-1}, + year = 2009, + publisher = pub-springer, + address = pub-springer:adr +} + +@InProceedings{ levin.ea:idea:2009, + author = {Timothy E. Levin and Cynthia E. Irvine and Terry Benzel + and Thuy D. Nguyen and Paul C. Clark and Ganesha Bhaskara}, + title = {Idea: Trusted Emergency Management}, + booktitle = {ESSoS}, + year = 2009, + pages = {32--36}, + doi = {10.1007/978-3-642-00199-4_3}, + abstract = {Through first-responder access to sensitive information + for which they have not been pre-vetted, lives and property + can be saved. We describe enhancements to a trusted + emergency information management (EIM) system that securely + allows for extraordinary access to sensitive information + during a crisis. A major component of the architecture is + the end-user device, the security of which is enhanced with + processor-level encryption of memory. This paper introduces + an approach to more efficiently use the + processor-encryption feature for secure data storage, as + well as ISA instructions for the management of emergency + state.}, + crossref = {massacci.ea:engineering:2009} +} + +@Proceedings{ massacci.ea:engineering:2009, + editor = {Fabio Massacci and Samuel T. Redwine Jr. and Nicola + Zannone}, + title = {Engineering Secure Software and Systems, First + International Symposium ESSoS 2009, Leuven, Belgium, + February 4-6, 2009. Proceedings}, + booktitle = {ESSoS}, + volume = 5429, + year = 2009, + isbn = {978-3-642-00198-7}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + doi = {10.1007/978-3-642-00199-4} +} + +@Article{ phan.ea:survey:2008, + author = {Tan Phan and Jun Han and Jean-Guy Schneider and Tim + Ebringer and Tony Rogers}, + title = {A Survey of Policy-Based Management Approaches for Service + Oriented Systems}, + journal = {Australian Software Engineering Conference}, + volume = 0, + year = 2008, + issn = {1530-0803}, + pages = {392--401}, + doi = {10.1109/ASWEC.2008.56}, + address = pub-ieee:adr, + publisher = pub-ieee, + abstract = {Policy based management in Service Oriented Architecture + (SOA) allows organizations to apply rules and regulations + on their business processes. Policy has long been employed + in the management of traditional distributed systems and + many policy frameworks have been proposed. However,SOA + differs in several aspects to traditional systems; thus, + there is a unique set of requirements for an effective SOA + policy system. In this paper, we evaluate five popular + policy frameworks which are IETF, Ponder, KAoS, Rei and + WS-Policy against a number of general and SOA-specific + criteria to identify what features of these existing + systems can be adopted for SOA and what are not. We then, + based on their feature sets, discuss the applicability of + the frameworks for SOA management.} +} + +@InProceedings{ sevinc.ea:securing:2007, + author = {Paul E. Sevin\c{c} and Mario Strasser and David A. Basin}, + title = {Securing the Distribution and Storage of Secrets with + Trusted Platform Modules}, + booktitle = {WISTP}, + year = 2007, + pages = {53--66}, + doi = {10.1007/978-3-540-72354-7_5}, + crossref = {sauveron.ea:information:2007}, + abstract = {We present a protocol that allows servers to securely + distribute secrets to trusted platforms. The protocol + maintains the confidentiality of secrets in the face of + eavesdroppers and careless users. Given an ideal + (tamper-proof) trusted platform, the protocol can even + withstand attacks by dishonest users. As an example of its + use, we present an application to secure document + processing.} +} + +@Proceedings{ sauveron.ea:information:2007, + editor = {Damien Sauveron and Constantinos Markantonakis and Angelos + Bilas and Jean-Jacques Quisquater}, + title = {Information Security Theory and Practices. Smart Cards, + Mobile and Ubiquitous Computing Systems, First IFIP TC6 / + WG 8.8 / WG 11.2 International Workshop, WISTP 2007, + Heraklion, Crete, Greece, May 9-11, 2007, Proceedings}, + booktitle = {WISTP}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 4462, + year = 2007, + isbn = {978-3-540-72353-0} +} + +@InProceedings{ liu.ea:fabric:2009, + author = {Jed Liu and Michael D. George and K. Vikram and Xin Qi and + Lucas Waye and Andrew C. Myers}, + title = {Fabric: a platform for secure distributed computation and + storage}, + booktitle = {SOSP '09: Proceedings of the ACM SIGOPS 22nd symposium on + Operating systems principles}, + year = 2009, + isbn = {978-1-60558-752-3}, + pages = {321--334}, + location = {Big Sky, Montana, USA}, + doi = {10.1145/1629575.1629606}, + address = pub-acm:adr, + publisher = pub-acm, + abstract = {Fabric is a new system and language for building secure + distributed information systems. It is a decentralized + system that allows heterogeneous network nodes to securely + share both information and computation resources despite + mutual distrust. Its high-level programming language makes + distribution and persistence largely transparent to + programmers. Fabric supports data-shipping and + function-shipping styles of computation: both computation + and information can move between nodes to meet security + requirements or to improve performance. Fabric provides a + rich, Java-like object model, but data resources are + labeled with confidentiality and integrity policies that + are enforced through a combination of compile-time and + run-time mechanisms. Optimistic, nested transactions ensure + consistency across all objects and nodes. A peer-to-peer + dissemination layer helps to increase availability and to + balance load. Results from applications built using Fabric + suggest that Fabric has a clean, concise programming model, + offers good performance, and enforces security.} +} + +@InProceedings{ ferreira.ea:how:2009, + author = {Ana Ferreira and David Chadwick and Pedro Farinha and + Gansen Zhao and Rui Chilro and Ricardo Cruz-Correia and + Luis Antunes}, + title = {How to securely break into RBAC: the BTG-RBAC model}, + booktitle = {Annual Computer Security Applications Conference (ACSAC)}, + year = 2009, + abstract = {Access control models describe frameworks that dictate how + subjects (e.g. users) access resources. In the Role-Based + Access Control (RBAC) model access to resources is based on + the role the user holds within the organization. Although + flexible and easier to manage within large-scale + authorization frameworks, RBAC is usually a static model + where access control decisions have only two output + options: Grant or Deny. Break The Glass (BTG) policies can + be provided in order to break or override the access + controls within an access control policy but in a + controlled and justifiable manner. The main objective of + this paper is to integrate BTG within the NIST/ANSI RBAC + model in a transparent and secure way so that it can be + adopted generically in any domain where unanticipated or + emergency situations may occur. The new proposed model, + called BTG-RBAC, provides a third decision option BTG. This + allows break the glass policies to be implemented in any + application without any major changes to either the + application or the RBAC authorization infrastructure, apart + from the decision engine. Finally, in order to validate the + model, we discuss how the BTG-RBAC model is being + introduced within a Portuguese healthcare institution where + the legislation requires that genetic information must be + accessed by a restricted group of healthcare professionals. + These professionals, advised by the ethical committee, have + required and asked for the implementation of the BTG + concept in order to comply with the said legislation.} +} + +@Article{ moggi:notions:1991, + author = {Eugenio Moggi}, + title = {Notions of Computation and Monads}, + journal = {Information and Computation}, + volume = 93, + number = 1, + year = 1991, + pages = {55--92} +} + +@InProceedings{ wadler:monads:1995, + author = {Philip Wadler}, + title = {Monads for Functional Programming}, + booktitle = {Advanced Functional Programming}, + year = 1995, + pages = {24--52}, + crossref = {jeuring.ea:advanced:1995} +} + +@Proceedings{ jeuring.ea:advanced:1995, + editor = {Johan Jeuring and Erik Meijer}, + title = {Advanced Functional Programming, First International + Spring School on Advanced Functional Programming + Techniques, B{\aa}stad, Sweden, May 24-30, 1995, Tutorial + Text}, + booktitle = {Advanced Functional Programming}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 925, + year = 1995, + isbn = {3-540-59451-5} +} + +@InProceedings{ grieskamp.ea:model-based:2008, + author = {Wolfgang Grieskamp and Nicolas Kicillof and Dave MacDonald + and Alok Nandan and Keith Stobie and Fred L. Wurden}, + title = {Model-Based Quality Assurance of Windows Protocol + Documentation}, + booktitle = {Software Testing, Verification, and Validation (ICST)}, + year = 2008, + pages = {502--506}, + doi = {10.1109/ICST.2008.50}, + abstract = {Microsoft is producing high-quality documentation for + Windows client-server and server-server protocols. Our + group in the Windows organization is responsible for + verifying the documentation to ensure it is of the highest + quality. We are applying various test-driven methods + including, when appropriate, a model-based approach. This + paper describes certain aspects of the quality assurance + process we put in place, and specifically focuses on + model-based testing (MBT). Our experiences so far confirm + that MBT works and that it scales, provided it is + accompanied by sound tool support and clear methodological + guidance.}, + location = {Lillehammer, Norway, April 9-11, 2008}, + volume = 0, + isbn = {978-0-7695-3127-4}, + publisher = pub-ieee, + address = pub-ieee:adr +} + +@InProceedings{ berghofer.ea:random:2004, + author = {Stefan Berghofer and Tobias Nipkow}, + title = {Random Testing in Isabelle/HOL}, + booktitle = {Software Engineering and Formal Methods (SEFM)}, + year = 2004, + pages = {230--239}, + doi = {10.1109/SEFM.2004.36}, + abstract = {When developing non-trivial formalizations in a theorem + prover, a considerable amount of time is devoted to + "debugging" specifications and conjectures by failed proof + attempts. To detect such problems early in the proof and + save development time, we have extended the Isabelle + theorem prover with a tool for testing specifications by + evaluating propositions under an assignment of random + values to free variables. Distribution of the test data is + optimized via mutation testing. The technical contributions + are an extension of earlier work with inductive definitions + and a generic method for randomly generating elements of + recursive datatypes.}, + location = {28-30 September 2004, Beijing, China}, + publisher = pub-ieee, + address = pub-ieee:adr, + isbn = {0-7695-2222-X} +} + +@TechReport{ gallaher.ea:economic:2002, + institution = {National Institute of Standards \& Technology}, + number = {Planning Report 02-03}, + year = 2002, + month = may, + author = {M.P. Gallaher and B.M. Kropp}, + title = {The Economic Impacts of Inadequate Infrastructure for + Software Testing}, + abstract = {Software has become an intrinsic part of business over the + last decade. Virtually every business in the U.S. in every + sector depends on it to aid in the development, production, + marketing, and support of its products and services. + Advances in computers and related technology have provided + the building blocks on which new industries have evolved. + Innovations in the fields of robotic manufacturing, + nanotechnologies, and human genetics research all have been + enabled by low cost computational and control capabilities + supplied by computers and software. In 2000, total sales of + software reached approximately \$180 billion. Rapid growth + has created a significant and high-paid workforce, with + 697,000 employed as software engineers and an additional + 585,000 as computer programmers. Reducing the cost of + software development and improving software quality are + important objectives of the U.S. software industry. + However, the complexity of the underlying software needed + to support the U.S.'s computerized economy is increasing at + an alarming rate. The size of software products is no + longer measured in terms of thousands of lines of code, but + millions of lines of code. This increasing complexity along + with a decreasing average market life expectancy for many + software products has heightened concerns over software + quality.} +} + +@InProceedings{ tej.ea:corrected:1997, + author = {Haykal Tej and Burkhart Wolff}, + title = {A Corrected Failure Divergence Model for {CSP} in + {Isabelle/HOL}}, + year = 1997, + pages = {318--337}, + doi = {10.1007/3-540-63533-5_17}, + abstract = {We present a failure-divergence model for CSP following + the concepts of [BR 85]. Its formal representation within + higher order logic in the theorem prover Isabelle/HOL [Pau + 94] revealed an error in the basic definition of CSP + concerning the treatment of the termination symbol tick. A + corrected model has been formally proven consistent with + Isabelle/HOL. Moreover, the changed version maintains the + essential algebraic properties of CSP. As a result, there + is a proven correct implementation of a ldquoCSP + workbenchrdquo within Isabelle.}, + crossref = {fitzgerald.ea:formal:1997} +} + +@Proceedings{ fitzgerald.ea:formal:1997, + editor = {John S. Fitzgerald and Cliff B. Jones and Peter Lucas}, + booktitle = {Formal Methods Europe (FME)}, + location = {Graz, Austria, September 15-19, 1997, Proceedings}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 1313, + year = 1997, + isbn = {3-540-63533-5} +} + +@InProceedings{ bentakouk.ea:formal:2009, + author = {Lina Bentakouk and Pascal Poizat and Fatiha Za\"{\i}di}, + title = {A Formal Framework for Service Orchestration Testing Based + on Symbolic Transition Systems}, + year = 2009, + pages = {16--32}, + doi = {10.1007/978-3-642-05031-2_2}, + crossref = {nunez.ea:testing:2009}, + abstract = {The pre-eminent role played by software composition, and + more particularly service composition, in modern software + development, together with the complexity of workflow + languages such as WS-BPEL have made composite service + testing a topical issue. In this article we contribute to + this issue with an automatic testing approach for WS-BPEL + orchestrations. Compared to related work, we support + WS-BPEL data computations and exchanges, while overcoming + the consequential state explosion problem. This is achieved + through the use of symbolic transition system models and + their symbolic execution. Throughout the article, we + illustrate our approach on a realistic medium-size example. + + } +} + +@Proceedings{ nunez.ea:testing:2009, + editor = {Manuel N{\'u}{\~n}ez and Paul Baker and Mercedes G. Merayo}, + title = {Testing of Software and Communication Systems, 21st IFIP + WG 6.1 International Conference, TESTCOM 2009 and 9th + International Workshop, FATES 2009, Eindhoven, The + Netherlands, November 2-4, 2009. Proceedings}, + booktitle = {TestCom/FATES}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 5826, + year = 2009, + isbn = {978-3-642-05030-5}, + doi = {10.1007/978-3-642-05031-2} +} + +@InProceedings{ anand.ea:demand-driven:2008, + author = {Saswat Anand and Patrice Godefroid and Nikolai Tillmann}, + title = {Demand-Driven Compositional Symbolic Execution}, + booktitle = {TACAS}, + year = 2008, + pages = {367--381}, + doi = {10.1007/978-3-540-78800-3_28}, + crossref = {ramakrishnan.ea:tools:2008}, + abstract = {We discuss how to perform symbolic execution of large + programs in a manner that is both compositional (hence more + scalable) and demand-driven. Compositional symbolic + execution means finding feasible interprocedural program + paths by composing symbolic executions of feasible + intraprocedural paths. By demand-driven, we mean that as + few intraprocedural paths as possible are symbolically + executed in order to form an interprocedural path leading + to a specific target branch or statement of interest (like + an assertion). A key originality of this work is that our + demand-driven compositional interprocedural symbolic + execution is performed entirely using first-order logic + formulas solved with an off-the-shelf SMT + (Satisfiability-Modulo-Theories) solver {\^a} no procedure + in-lining or custom algorithm is required for the + interprocedural part. This allows a uniform and elegant way + of summarizing procedures at various levels of detail and + of composing those using logic formulas. We have + implemented a prototype of this novel symbolic execution + technique as an extension of Pex, a general automatic + testing framework for .NET applications. Preliminary + experimental results are encouraging. For instance, our + prototype was able to generate tests triggering assertion + violations in programs with large numbers of program paths + that were beyond the scope of non-compositional test + generation. } +} + +@Proceedings{ ramakrishnan.ea:tools:2008, + editor = {C. R. Ramakrishnan and Jakob Rehof}, + title = {Tools and Algorithms for the Construction and Analysis of + Systems, 14th International Conference, TACAS 2008, Held as + Part of the Joint European Conferences on Theory and + Practice of Software, ETAPS 2008, Budapest, Hungary, March + 29-April 6, 2008. Proceedings}, + booktitle = {TACAS}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 4963, + year = 2008, + isbn = {978-3-540-78799-0} +} + +@InProceedings{ boyapati.ea:korat:2002, + author = {Chandrasekhar Boyapati and Sarfraz Khurshid and Darko + Marinov}, + title = {{Korat}: automated testing based on {Java} predicates}, + booktitle = {ISSTA}, + year = 2002, + pages = {123--133}, + doi = {10.1145/566172.566191}, + abstract = {This paper presents Korat, a novel framework for automated + testing of Java programs. Given a formal specification for + a method, Korat uses the method precondition to + automatically generate all (nonisomorphic) test cases up to + a given small size. Korat then executes the method on each + test case, and uses the method postcondition as a test + oracle to check the correctness of each output.To generate + test cases for a method, Korat constructs a Java predicate + (i.e., a method that returns a boolean) from the method's + pre-condition. The heart of Korat is a technique for + automatic test case generation: given a predicate and a + bound on the size of its inputs, Korat generates all + (nonisomorphic) inputs for which the predicate returns + true. Korat exhaustively explores the bounded input space + of the predicate but does so efficiently by monitoring the + predicate's executions and pruning large portions of the + search space.This paper illustrates the use of Korat for + testing several data structures, including some from the + Java Collections Framework. The experimental results show + that it is feasible to generate test cases from Java + predicates, even when the search space for inputs is very + large. This paper also compares Korat with a testing + framework based on declarative specifications. Contrary to + our initial expectation, the experiments show that Korat + generates test cases much faster than the declarative + framework.} +} + +@Article{ visser.ea:model:2003, + author = {Willem Visser and Klaus Havelund and Guillaume P. Brat and + Seungjoon Park and Flavio Lerda}, + title = {Model Checking Programs}, + journal = {Autom. Softw. Eng.}, + volume = 10, + number = 2, + year = 2003, + pages = {203--232}, + doi = {10.1023/A:1022920129859}, + abstract = {The majority of work carried out in the formal methods + community throughout the last three decades has (for good + reasons) been devoted to special languages designed to make + it easier to experiment with mechanized formal methods such + as theorem provers, proof checkers and model checkers. In + this paper we will attempt to give convincing arguments for + why we believe it is time for the formal methods community + to shift some of its attention towards the analysis of + programs written in modern programming languages. In + keeping with this philosophy we have developed a + verification and testing environment for Java, called Java + PathFinder (JPF), which integrates model checking, program + analysis and testing. Part of this work has consisted of + building a new Java Virtual Machine that interprets Java + bytecode. JPF uses state compression to handle big states, + and partial order and symmetry reduction, slicing, + abstraction, and runtime analysis techniques to reduce the + state space. JPF has been applied to a real-time avionics + operating system developed at Honeywell, illustrating an + intricate error, and to a model of a spacecraft controller, + illustrating the combination of abstraction, runtime + analysis, and slicing with model checking.} +} + +@InProceedings{ bjorner.ea:path:2009, + author = {Nikolaj Bj{\o}rner and Nikolai Tillmann and Andrei + Voronkov}, + title = {Path Feasibility Analysis for String-Manipulating + Programs}, + booktitle = {TACAS}, + year = 2009, + pages = {307--321}, + doi = {10.1007/978-3-642-00768-2_27}, + crossref = {kowalewski.ea:tools:2009}, + abstract = {We discuss the problem of path feasibility for programs + manipulating strings using a collection of standard string + library functions. We prove results on the complexity of + this problem, including its undecidability in the general + case and decidability of some special cases. In the context + of test-case generation, we are interested in an efficient + finite model finding method for string constraints. To this + end we develop a two-tier finite model finding procedure. + First, an integer abstraction of string constraints are + passed to an SMT (Satisfiability Modulo Theories) solver. + The abstraction is either unsatisfiable, or the solver + produces a model that fixes lengths of enough strings to + reduce the entire problem to be finite domain. The + resulting fixed-length string constraints are then solved + in a second phase. We implemented the procedure in a + symbolic execution framework, report on the encouraging + results and discuss directions for improving the method + further.} +} + +@Proceedings{ kowalewski.ea:tools:2009, + editor = {Stefan Kowalewski and Anna Philippou}, + title = {Tools and Algorithms for the Construction and Analysis of + Systems, 15th International Conference, TACAS 2009, Held as + Part of the Joint European Conferences on Theory and + Practice of Software, ETAPS 2009, York, UK, March 22-29, + 2009. Proceedings}, + booktitle = {TACAS}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 5505, + year = 2009, + isbn = {978-3-642-00767-5}, + doi = {10.1007/978-3-642-00768-2} +} + +@InProceedings{ huima:implementing:2007, + author = {Antti Huima}, + title = {Implementing Conformiq Qtronic}, + booktitle = {TestCom/FATES}, + year = 2007, + pages = {1--12}, + doi = {10.1007/978-3-540-73066-8_1}, + crossref = {petrenko.ea:testing:2007}, + abstract = {Conformiq Qtronic is a commercial tool for model driven + testing. It derives tests automatically from behavioral + system models. These are black-box tests [1] by nature, + which means that they depend on the model and the + interfaces of the system under test, but not on the + internal structure (e.g. source code) of the + implementation. In this essay, which accompanies my invited + talk, I survey the nature of Conformiq Qtronic, the main + implementation challenges that we have encountered and how + we have approached them.} +} + +@Proceedings{ petrenko.ea:testing:2007, + editor = {Alexandre Petrenko and Margus Veanes and Jan Tretmans and + Wolfgang Grieskamp}, + title = {Testing of Software and Communicating Systems, 19th IFIP + TC6/WG6.1 International Conference, TestCom 2007, 7th + International Workshop, FATES 2007, Tallinn, Estonia, June + 26-29, 2007, Proceedings}, + booktitle = {TestCom/FATES}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 4581, + year = 2007, + isbn = {978-3-540-73065-1} +} + +@InProceedings{ tretmans.ea:torx:2003, + howpublished = {http://eprints.eemcs.utwente.nl/9475/}, + month = {December}, + author = {G. J. Tretmans and H. Brinksma}, + booktitle = {First European Conference on Model-Driven Software + Engineering, Nuremberg, Germany}, + editor = {A. Hartman and K. Dussa-Ziegler}, + abstract = {Systematic testing is very important for assessing and + improving the quality of software systems. Yet, testing + turns out to be expensive, laborious, time-consuming and + error-prone. The Dutch research and development project + C\^ote de Resyste worked on methods, techniques and tools + for automating specification based testing using formal + methods. The main achievement of the project is a test + tool, baptized TorX, which integrates automatic test + generation, test execution, and test analysis in an + on-the-fly manner. On the one hand, TorX is based on + well-defined theory, viz. the ioco-test theory, which has + its roots in the theory of testing- and + refusal-equivalences for transition systems. On the other + hand, the applicability of TorX has been demonstrated by + testing several academic and industrial case studies. This + paper summarizes the main results of the project C\^ote de + Resyste.}, + title = {TorX: Automated Model-Based Testing}, + year = 2003, + pages = {31--43}, + location = {Nuremberg, Germany}, + trnumber = 9475, + event_dates = {December 11-12, 2003}, + num_pages = 13 +} + +@InProceedings{ jaffuel.ea:leirios:2007, + author = {Eddie Jaffuel and Bruno Legeard}, + title = {LEIRIOS Test Generator: Automated Test Generation from B + Models}, + booktitle = {B}, + year = 2007, + pages = {277--280}, + doi = {10.1007/11955757_29}, + crossref = {julliand.ea:b:2006}, + abstract = {Since 2003, automated test generation from B abstract + machines has been trying out in the smart card industry, + using LEIRIOS Test Generator (LTG) for SmartCard tool. Now + the major card manufacturers, such as Gemalto and Giesecke + & Devrient, are regularly deploying model-based testing in + their validation processes. The purpose is black-box + functional testing: from the specifications (a standard or + specific requirements), a B formal model is developed which + is the basis for test generation. Generated test cases are + then translated into executable test scripts and then run + on the application.} +} + +@Proceedings{ julliand.ea:b:2006, + editor = {Jacques Julliand and Olga Kouchnarenko}, + title = {B 2007: Formal Specification and Development in B, 7th + International Conference of B Users, Besan\c{c}on, France, + January 17-19, 2007, Proceedings}, + booktitle = {B}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 4355, + year = 2006, + isbn = {3-540-68760-2} +} + +@InProceedings{ hu.ea:enabling:2008, + author = {Hongxin Hu and Gail-Joon Ahn}, + title = {Enabling verification and conformance testing for access + control model}, + booktitle = {ACM symposium on Access control models and technologies + (SACMAT)}, + year = 2008, + isbn = {978-1-60558-129-3}, + pages = {195--204}, + location = {Estes Park, CO, USA}, + doi = {10.1145/1377836.1377867}, + address = pub-acm:adr, + publisher = pub-acm, + abstract = {Verification and testing are the important step for + software assurance. However, such crucial and yet + challenging tasks have not been widely adopted in building + access control systems. In this paper we propose a + methodology to support automatic analysis and conformance + testing for access control systems, integrating those + features to Assurance Management Framework (AMF). Our + methodology attempts to verify formal specifications of a + role-based access control model and corresponding policies + with selected security properties. Also, we systematically + articulate testing cases from formal specifications and + validate conformance to the system design and + implementation using those cases. In addition, we + demonstrate feasibility and effectiveness of our + methodology using SAT and Alloy toolset.} +} + +@Article{ grindal.ea:combination:2005, + author = {Mats Grindal and Jeff Offutt and Sten F. Andler}, + title = {Combination testing strategies: a survey}, + journal = {Softw. Test., Verif. Reliab.}, + volume = 15, + number = 3, + year = 2005, + pages = {167--199}, + doi = {10.1002/stvr.319}, + abstract = {Combination strategies are test case selection methods + that identify test cases by combining values of the + different test object input parameters based on some + combinatorial strategy. This survey presents 16 different + combination strategies, covering more than 40 papers that + focus on one or several combination strategies. This + collection represents most of the existing work performed + on combination strategies. This survey describes the basic + algorithms used by the combination strategies. Some + properties of combination strategies, including coverage + criteria and theoretical bounds on the size of test suites, + are also included in this description. This survey paper + also includes a subsumption hierarchy that attempts to + relate the various coverage criteria associated with the + identified combination strategies.} +} + +@InProceedings{ goga:comparing:2001, + author = {Nicolae Goga}, + title = {Comparing TorX, Autolink, TGV and UIO Test Algorithms}, + booktitle = {SDL Forum}, + year = 2001, + pages = {379--402}, + doi = {10.1007/3-540-48213-X}, + crossref = {reed.ea:sdl:2001}, + abstract = {This paper presents a comparison of four algorithms for + test derivation: TorX, TGV, Autolink and UIO algorithms. + The algorithms are classified according to the detection + power of their conformance rela- tions. Because Autolink + does not have an explicit conformance relation, a + conformance relation is reconstructed for it. The + experimental results obtained by applying TorX, Autolink, + UIO and TGV to the Conference Protocol case study are + consistent with the theoretical results of this paper.} +} + +@Proceedings{ reed.ea:sdl:2001, + editor = {Rick Reed and Jeanne Reed}, + title = {SDL 2001: Meeting UML, 10th International SDL Forum + Copenhagen, Denmark, June 27-29, 2001, Proceedings}, + booktitle = {SDL Forum}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 2078, + year = 2001, + isbn = {3-540-42281-1} +} + +@InProceedings{ belinfante.ea:tools:2004, + author = {Axel Belinfante and Lars Frantzen and Christian + Schallhart}, + title = {Tools for Test Case Generation}, + booktitle = {Model-Based Testing of Reactive Systems}, + year = 2004, + pages = {391--438}, + doi = {10.1007/11498490_18}, + crossref = {broy.ea:model-based:2005} +} + +@Proceedings{ broy.ea:model-based:2005, + editor = {Manfred Broy and Bengt Jonsson and Joost-Pieter Katoen and + Martin Leucker and Alexander Pretschner}, + title = {Model-Based Testing of Reactive Systems, Advanced Lectures + [The volume is the outcome of a research seminar that was + held in Schloss Dagstuhl in January 2004]}, + booktitle = {Model-Based Testing of Reactive Systems}, + volume = 3472, + year = 2005, + isbn = {3-540-26278-4}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs +} + +@InProceedings{ gardner.ea:securing:2009, + author = {Ryan W. Gardner and Sujata Garera and Matthew W. Pagano + and Matthew Green and Aviel D. Rubin}, + title = {Securing medical records on smart phones}, + booktitle = {ACM workshop on Security and privacy in medical and + home-care systems (SPIMACS)}, + year = 2009, + isbn = {978-1-60558-790-5}, + pages = {31--40}, + location = {Chicago, Illinois, USA}, + doi = {10.1145/1655084.1655090}, + address = pub-acm:adr, + publisher = pub-acm, + abstract = {There is an inherent conflict between the desire to + maintain privacy of one's medical records and the need to + make those records available during an emergency. To + satisfy both objectives, we introduce a flexible + architecture for the secure storage of medical records on + smart phones. In our system, a person can view her records + at any time, and emergency medical personnel can view the + records as long as the person is present (even if she is + unconscious). Our solution allows for efficient revocation + of access rights and is robust against adversaries who can + access the phone's storage offline.} +} + + +@Article{ govaerts.ea:formal:2008, + author = {John Govaerts and Arosha K. Bandara and Kevin Curran}, + title = {A formal logic approach to firewall packet filtering + analysis and generation}, + journal = {Artif. Intell. Rev.}, + volume = 29, + number = {3-4}, + year = 2008, + pages = {223--248}, + doi = {10.1007/s10462-009-9147-0}, + publisher = pub-springer, + address = pub-springer:adr, + abstract = {Recent years have seen a significant increase in the usage + of computers and their capabilities to communicate with + each other. With this has come the need for more security + and firewalls have proved themselves an important piece of + the overall architecture, as the body of rules they + implement actually realises the security policy of their + owners. Unfor- tunately, there is little help for their + administrators to understand the actual meaning of the + firewall rules. This work shows that formal logic is an + important tool in this respect, because it is particularly + apt at modelling real-world situations and its formalism is + conductive to reason about such a model. As a consequence, + logic may be used to prove the properties of the models it + represents and is a sensible way to go in order to create + those models on com- puters to automate such activities. We + describe here a prototype which includes a description of a + network and the body of firewall rules applied to its + components. We were able to detect a number of anomalies + within the rule-set: inexistent elements (e.g. hosts or + services on destination components), redundancies in rules + defining the same action for a network and hosts belonging + to it, irrelevance as rules would involve traffic that + would not pass through a filtering device, and + contradiction in actions applied to elements or to a + network and its hosts. The prototype produces actual + firewall rules as well, generated from the model and + expressed in the syntax of IPChains and Cisco's PIX. } +} + +@InProceedings{ jalili.ea:specification:2002, + author = {Rasool Jalili and Mohsen Rezvani}, + title = {Specification and Verification of Security Policies in + Firewalls}, + booktitle = {EurAsia-ICT}, + year = 2002, + pages = {154--163}, + doi = {10.1007/3-540-36087-5_18}, + crossref = {shafazand.ea:eurasia-ict:2002}, + abstract = {Rules are used as a way of managing and configuring + firewalls to fulfill security requirements in most cases. + Managers have to specify their organizational security + policies using low level and order-dependent rules. + Furthermore, dependency of firewalls to the network + topology, frequent changes in network topology (specially + in dynamic networks), and lack of a method for analysis and + verification of specified security policy may reduce to + inconsistencies and security holes. Existence of a higher + level environment for security policy specification can + rectify part of the problems. In this paper we present a + language for high level and formal specification of + security policy in firewalls. Using the language, a + security manager can configure its firewall based on his + required security policy independent of the network + topology. The language is used as a framework for analysis + and verification of security policies. We designed and + implemented a tool based on theorem proving for detecting + inconsistencies, coverage, as well as applying a query on + the specified policy. Results of analysis can be used to + detect security vulnerabilities.} +} + +@Proceedings{ shafazand.ea:eurasia-ict:2002, + editor = {Hassan Shafazand and A. Min Tjoa}, + title = {EurAsia-ICT 2002: Information and Communication + Technology, First EurAsian Conference, Shiraz, Iran, + October 29-31, 2002, Proceedings}, + booktitle = {EurAsia-ICT}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 2510, + year = 2002, + isbn = {3-540-00028-3} +} + +@Article{ sutter:free:2005, + author = {Herb Sutter}, + journal = {Dr. Dobb{\^a}s Journal}, + number = 3, + pages = {202--210}, + title = {The Free Lunch Is Over: A Fundamental Turn Toward + Concurrency in Software}, + url = {http://www.gotw.ca/publications/concurrency-ddj.htm}, + volume = 30, + year = 2005 +} + + +@InProceedings{ lachner.ea:information:2008, + author = {Janine Lachner and Hermann Hellwagner}, + title = {Information and Communication Systems for Mobile Emergency + Response}, + year = 2008, + pages = {213--224}, + doi = {10.1007/978-3-540-78942-0_22}, + crossref = {kaschek.ea:information:2008}, + abstract = {This discussion paper attempts to propose emergency + response and disaster management as worthwhile areas of + applied research for the information system community. The + typical requirements, entities and activities involved in + specifically mobile emergency response operations are + summarized. Recent research contributions in this area are + exemplarily reviewed in order to give a deeper insight into + the role and use of mobile information and communication + systems. Finally, the major challenges and research needs + regarding information systems are summarized, with a view + to draw the attention of information systems researchers to + this interesting and important field.} +} + +@Proceedings{ kaschek.ea:information:2008, + editor = {Roland Kaschek and Christian Kop and Claudia Steinberger + and G{\"u}nther Fliedl}, + title = {Information Systems and e-Business Technologies, 2nd + International United Information Systems Conference, + UNISCON 2008, Klagenfurt, Austria, April 22-25, 2008, + Proceedings}, + booktitle = {Information Systems and e-Business Technologies (UNISCON)}, + series = s-lnbip, + volume = 5, + year = 2008, + publisher = pub-springer, + address = pub-springer:adr, + isbn = {978-3-540-78941-3}, +} +@InProceedings{ johnson:complexity:2008, + author = {Chris W. Johnson}, + title = {Complexity, Structured Chaos and the Importance of + Information Management for Mobile Computing in the {UK} + Floods of 2007}, + booktitle = {Mobile Response}, + year = 2008, + pages = {1--11}, + doi = {10.1007/978-3-642-00440-7_1}, + crossref = {loffler.ea:mobile:2009}, + abstract = {Many research teams have developed mobile computing + architectures to support the emergency and rescue services + in a range of civil contingencies. These proposals are + based on innovative technologies and show considerable + creativity in the design of their user interfaces. In + contrast, this paper presents lessons learned from the 2007 + UK floods. Mobile telecommunications failed in many + different ways and from many different causes, including + physical damage to handsets, as well as the loss of base + stations and UPSs. The insights gained from the floods are + being used to inform the design of next generation mobile + digital communications systems for UK responders. However, + the technical problems are arguably less important than the + insights that were obtained about {\^a}systemic{\^a} + failures in the interfaces between local government, + emergency services and the variety of agencies that must + cooperate in major civil contingencies. Problems in + information management led to inconsistencies and + incompatibilities. In consequence, the output from one + application could not easily be used as input to systems + operated by other agencies. These issues must be addressed + before we are overwhelmed by the increased bandwidth + afforded by new mobile devices and novel sensing + technologies. It is concluded that unless we understand the + chaos, complexity and the contextual issues that + characterise previous emergency situations then there is + little prospect that we will be able to design effective + mobile technologies for future incidents.} +} + +@Proceedings{ loffler.ea:mobile:2009, + editor = {Jobst L{\"o}ffler and Markus Klann}, + location = {Mobile Response, Second International Workshop on Mobile + Information Technology for Emergency Response, + MobileResponse 2008. Bonn, Germany, May 29-30, 2008, + Revised Selected Papers}, + title = {Mobile Information Technology for Emergency Response, + (MobileResponse)}, + booktitle = {Mobile Information Technology for Emergency Response, + (MobileResponse)}, + publisher = pub-springer, + address = pub-springer:adr, + series = s-lncs, + volume = 5424, + year = 2009, + isbn = {978-3-642-00439-1}, + doi = {10.1007/978-3-642-00440-7} +} + + +@book{Hoare:1985:CSP:3921, + author = {Hoare, C. A. R.}, + title = {Communicating Sequential Processes}, + year = {1985}, + isbn = {0-13-153271-5}, + publisher = {Prentice-Hall, Inc.}, + address = {Upper Saddle River, NJ, USA}, +} + +@InProceedings{brookes-roscoe85, +author="Brookes, S. D. and Roscoe, A. W.", +editor="Brookes, Stephen D. and Roscoe, Andrew William and Winskel, Glynn", +title="An improved failures model for communicating processes", +booktitle="Seminar on Concurrency", +year="1985", +publisher="Springer Berlin Heidelberg", +address="Berlin, Heidelberg", +pages="281--305", +abstract="We extend the failures model of communicating processes to allow a more satisfactory treatment of divergence in addition to deadlock. The relationship between the revised model and the old model is discussed, and we make some connections with various models proposed by other authors.", +isbn="978-3-540-39593-5" +} + +@techreport{KriegBrueckner95, + author = {Krieg-Br\"uckner, B. and Peleska, J. and Olderog, E.-R. and Balzer, D. and Baer, A.}, + title = "Uniform Workbench --- Universelle Entwicklungsumgebung f{\"u}r formale Methoden", + institution = "Technischer Bericht 8/95", + year=1995, + address="Univ. Bremen", + note="\url{http://www.informatik.uni-bremen.de/~uniform}" +} + +@InProceedings{Camilleri91, +author="Camilleri, Albert J.", +editor="Birtwistle, Graham", +title="A Higher Order Logic Mechanization of the CSP Failure-Divergence Semantics", +booktitle="IV Higher Order Workshop, Banff 1990", +year="1991", +publisher="Springer London", +address="London", +pages="123--150", +abstract="Reasoning using process algebras often involves doing complex proofs, and computer-based support to facilitate the task is therefore desirable. In this paper we show how a general-purpose theorem prover based on higher order logic provides a natural framework for mechanizing the process algebra CSP. This is done by defining the semantics of the CSP operators in the logic and proving the high-level algebraic laws from the definitions as theorems. We mechanize a variation on the failure-divergence semantics that does not use alphabets at the syntactic level, but embeds them in the semantics. Our approach abstracts further from the explicit use of alphabets by modelling them as type variables. The result is a mechanized theory for a polymorphic formalization of CSP.", +isbn="978-1-4471-3182-3" +} + + +@InProceedings{FDRTutorial2000, +author="Broadfoot, Philippa +and Roscoe, Bill", +editor="Havelund, Klaus +and Penix, John +and Visser, Willem", +title="Tutorial on FDR and Its Applications", +booktitle="SPIN Model Checking and Software Verification", +year="2000", +publisher="Springer Berlin Heidelberg", +address="Berlin, Heidelberg", +pages="322--322", +abstract="FDR [1] is a refinement checker for the process algebra CSP [2,4], based on that language's well-established semantic models. FDR stands for Failures-Divergences Refinement, after the premier model. In common with many other model checkers, it works by ``determinising'' (or normalising) a specification and enumerating states in the cartesian product of this and the implementation. Unlike most, the specification and implementation are written in the same language. Under development by its creators, Formal Systems (a spin-off of the Computing Laboratory) since 1991, it now offers a range of state compression methods. On current workstations it can work at up to 20M states/hour with only a small degradation on moving to disc-based storage.", +isbn="978-3-540-45297-3" +} + +@article{IsobeRoggenbach2010, + title={CSP-Prover: a Proof Tool for the Verification of Scalable Concurrent Systems}, + author={Yoshinao Isobe and Markus Roggenbach}, + journal={Information and Media Technologies}, + volume={5}, + number={1}, + pages={32-39}, + year={2010}, + doi={10.11185/imt.5.32} +} + +@article{Noninterference_CSP-AFP, + author = {Pasquale Noce}, + title = {Noninterference Security in Communicating Sequential Processes}, + journal = {Archive of Formal Proofs}, + month = may, + year = 2014, + note = {\url{http://isa-afp.org/entries/Noninterference_CSP.html}, + Formal proof development}, + ISSN = {2150-914x}, +} + +@article{Noninterference_Sequential_Composition-AFP, + author = {Pasquale Noce}, + title = {Conservation of CSP Noninterference Security under Sequential Composition}, + journal = {Archive of Formal Proofs}, + month = apr, + year = 2016, + note = {\url{http://isa-afp.org/entries/Noninterference_Sequential_Composition.html}, + Formal proof development}, + ISSN = {2150-914x}, +} + +@article{Noninterference_Concurrent_Composition-AFP, + author = {Pasquale Noce}, + title = {Conservation of CSP Noninterference Security under Concurrent Composition}, + journal = {Archive of Formal Proofs}, + month = jun, + year = 2016, + note = {\url{http://isa-afp.org/entries/Noninterference_Concurrent_Composition.html}, + Formal proof development}, + ISSN = {2150-914x}, +} + + +@article{Feliachi-Wolff-Gaudel-AFP12, + author = {Abderrahmane Feliachi and Burkhart Wolff and Marie-Claude Gaudel}, + title = {Isabelle/Circus}, + journal = {Archive of Formal Proofs}, + month = jun, + year = 2012, + note = {\url{http://afp.sourceforge.net/entries/Circus.shtml}, + Formal proof development}, + area = {logical_representations}, + abstract = {The Circus specification language combines elements for + complex data and behavior specifications, using an integration of Z and CSP + with a refinement calculus. Its semantics is based on Hoare and He's + Unifying Theories of Programming (UTP). Isabelle/Circus is a formalization of + the UTP and the Circus language in Isabelle/HOL. It contains proof rules and + tactic support that allows for proofs of refinement for Circus processes + (involving both data and behavioral aspects). + The Isabelle/Circus environment supports a syntax for the semantic + definitions which is close to textbook presentations of Circus. This + article contains an extended version of corresponding VSTTE Paper together + with the complete formal development of its underlying commented theories.}, + issn = {2150-914x} +} + + + +@inproceedings{feliachigw12, + author = {Abderrahmane Feliachi and + Marie-Claude Gaudel and + Burkhart Wolff}, + title = {Isabelle/{C}ircus: A Process Specification and Verification Environment}, + booktitle = {VSTTE}, + year = {2012}, + pages = {243-260}, + series = {Lecture Notes in Computer Science}, + volume = {LNCS 7152}, + isbn = {978-3-642-27704-7}, + ee = {http://dx.doi.org/10.1007/978-3-642-27705-4_20}, + doi = {10.1007/978-3-642-27705-4_20}, + abstract = {The Circus specification language combines elements for complex data and behavior specifications, + using an integration of Z and CSP with a refinement calculus. Its semantics is based on Hoare and + He's unifying theories of programming (UTP). We develop a machine-checked, formal semantics based + on a "shallow embedding" of Circus in Isabelle/UTP (our semantic theory of UTP based on Isabelle/HOL). + We derive proof rules from this semantics and imple- ment tactic support that finally allows for + proofs of refinement for Circus processes (involving both data and behavioral aspects). + This proof environment supports a syntax for the semantic definitions which is close to textbook + presentations of Circus. }, + pdf = {http://www.lri.fr/~wolff/papers/conf/VSTTE-IsabelleCircus11.pdf}, + classification = {conference}, + area = {logical_representations}, + bibsource = {DBLP, http://dblp.uni-trier.de} +} + + +@article{feliachi-wolff:SymbTestgenCirta:2013, + author = {Abderrahmane Feliachi and Marie-Claude Gaudel and Burkhart Wolff}, + title = {Symbolic Test-generation in {HOL}-{T}est{G}en/{C}irTA: A Case Study}, + journal = {Int. J. Software Informatics}, + volume = {9}, + number = {2}, + year = {2015}, + pages = {177--203}, + abstract = {HOL-TestGen/CirTA is a theorem-prover based test generation + environment for specifications written in Circus, a + process-algebraic specification language in the tradition + of CSP. HOL-TestGen/CirTA is based on a formal embedding of + its semantics in Isabelle/HOL, allowing to derive rules over + specification constructs in a logically safe way. + Beyond the derivation of algebraic laws and calculi for + process refinement, the originality of HOL-TestGen/ CirTA + consists in an entire derived theory for the generation of + symbolic test-traces, including optimized rules for test-generation + as well as rules for symbolic execution. The deduction process + is automated by Isabelle tactics, allowing to protract the + state-space explosion resulting from blind enumeration of data. + + The implementation of test-generation procedures in CirTA is + completed by an integrated tool chain that transforms the + initial Circus specification of a system into a set of + equivalence classes (or ⤽symbolic tests⤝), which were compiled + to conventional JUnit test-drivers. + + This paper describes the novel tool-chain based on prior + theoretical work on semantics and test-theory and attempts + an evaluation via a medium-sized case study performed on a + component of a real-world safety-critical medical monitoring + system written in Java. We provide experimental measurements + of the kill-capacity of implementation mutants.}, + public = yes, + url = {https://www.lri.fr/~wolff/papers/journals/2015-cirta-case-study.pdf} +} + +@book{donovan2015go, + title={The Go Programming Language}, + author={Donovan, A.A.A. and Kernighan, B.W.}, + isbn={9780134190563}, + series={Addison-Wesley Professional Computing Series}, + year={2015}, + publisher={Pearson Education} +} + + +@ARTICLE{Barret95, +author={G. {Barrett}}, +journal={IEEE Transactions on Software Engineering}, +title={Model checking in practice: the T9000 virtual channel processor}, +year={1995}, +volume={21}, +number={2}, +pages={69-78}, +keywords={transputers;circuit CAD;formal specification;circuit analysis computing;model checking;T9000 virtual channel processor;formal method;industrial products;visual specification styles;case study;nonstandard CSP operators;visual specification style;INMOS CAD system;Design engineering;Design methodology;Hardware;Testing;Product design;Refining;Design automation;Manufacturing processes;Geometry;Process design}, +doi={10.1109/32.345823}, +ISSN={2326-3881}, +month={Feb}} + +@article{BrookesHR84, + author = {S. D. Brookes and + C. A. R. Hoare and + A. W. Roscoe}, + title = {A Theory of Communicating Sequential Processes}, + journal = {J. {ACM}}, + volume = {31}, + number = {3}, + pages = {560--599}, + year = {1984} +} + +@InProceedings{scott:cpo:1972, +author="Scott, Dana", +editor="Lawvere, F. W.", +title="Continuous lattices", +booktitle="Toposes, Algebraic Geometry and Logic", +year="1972", +publisher="Springer", +address="Berlin, Heidelberg", +pages="97--136", +abstract="Starting from the topological point of view a certain wide class of To-spaces is +introduced having a very strong extension property for continuous functions with values in these +spaces. It is then shown that all such spaces are complete lattices whose lattice structure +determines the topology --- these are the continuous lattices --- and every such lattice has +the extension property. With this foundation the lattices are studied in detail with respect +to projections, subspaces, embeddings, and constructions such as products, sums, function spaces, +and inverse limits. The main result of the paper is a proof that every topological space can be +embedded in a continuous lattice which is homeomorphic (and isomorphic) to its own function space. +The function algebra of such spaces provides mathematical models for the +Church-Curry $\lambda$-calculus.", +isbn="978-3-540-37609-5" +} + + +@article{HOL-CSP-AFP, + author = {Safouan Taha and Lina Ye and Burkhart Wolff}, + title = {{HOL-CSP Version 2.0}}, + journal = {Archive of Formal Proofs}, + month = apr, + year = 2019, + note = {\url{http://isa-afp.org/entries/HOL-CSP.html}}, + ISSN = {2150-914x}, +} + + +@incollection{HOL-CSP-iFM2020, + keywords = {Process-Algebra, Concurrency, Computational Models, Parametric System Verification}, + author = {Safouan Taha and Lina Ye and Burkhart Wolff}, + booktitle = {Integrated Formal Methods (iFM)}, + language = {USenglish}, + publisher = {Springer-Verlag}, + address = {Heidelberg}, + series = {Lecture Notes in Computer Science}, + number = {12546}, + doi = {10.1007/978-3-030-63461-2_23}, + editor = {Carlo A. Furia}, + title = {{P}hilosophers may {D}ine - {D}efinitively!}, + classification = {conference}, + areas = {formal methods, software}, + year = {2020}, + public = {yes} +} diff --git a/thys/CSP_RefTK/document/root.tex b/thys/CSP_RefTK/document/root.tex new file mode 100644 --- /dev/null +++ b/thys/CSP_RefTK/document/root.tex @@ -0,0 +1,85 @@ +\documentclass[11pt,a4paper]{book} +\usepackage{isabelle,isabellesym} +\usepackage{graphicx} +\graphicspath {{figures/}} + +% further packages required for unusual symbols (see also +% isabellesym.sty), use only when needed + + +\usepackage{latexsym} +\usepackage{amssymb} + %for \, \, \, \, \, \, + %\, \, \, \, \, + %\, \, \ + +%\usepackage[greek,english]{babel} + %option greek for \ + %option english (default language) for \, \ + +%\usepackage[latin1]{inputenc} + %for \, \, \, \, + %\, \, \ + +%\usepackage[only,bigsqcap]{stmaryrd} + %for \ + +%\usepackage{eufrak} + %for \ ... \, \ ... \ (also included in amssymb) + +%\usepackage{textcomp} + %for \, \ + +% this should be the last package used +\usepackage{pdfsetup} + +% urls in roman style, theory text in math-similar italics +\urlstyle{rm} +\isabellestyle{it} + +\begin{document} + +\title{The HOL-CSP Refinement Toolkit} +\author{ Safouan Taha \and Burkhart Wolff \and Lina Ye } +\maketitle +\chapter*{Abstract} + + Recently, a modern version of Roscoes and Brookes \cite{brookes-roscoe85} + Failure-Divergence Semantics for CSP has been formalized in Isabelle \cite{HOL-CSP-AFP}. + + We use this formal development called HOL-CSP2.0 to analyse a family of refinement + notions, comprising classic and new ones. + This analysis enables to derive a number of properties that allow to deepen the + understanding of these notions, in particular with respect to specification + decomposition principles for the case of infinite sets of events. The established + relations between the refinement relations help to clarify some obscure points in the + CSP literature, but also provide a weapon for shorter refinement proofs. Furthermore, + we provide a framework for state-normalisation allowing to formally reason on + parameterised process architectures. + + As a result, we have a modern environment for formal proofs of concurrent systems that + allow for the combination of general infinite processes with locally finite ones in a + logically safe way. We demonstrate these verification-techniques for classical, + generalised examples: The CopyBuffer for arbitrary data and the Dijkstra's Dining + Philosopher Problem of arbitrary size. + + If you consider to cite this work, please refer to \cite{HOL-CSP-iFM2020}. + +\tableofcontents + +% sane default for proof documents +\parindent 0pt\parskip 0.5ex + +% generated text of all theories +\input{session} + +% optional bibliography +\bibliographystyle{abbrv} +\bibliography{adb-long,root} + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/thys/Delta_System_Lemma/Cardinal_Library.thy b/thys/Delta_System_Lemma/Cardinal_Library.thy new file mode 100644 --- /dev/null +++ b/thys/Delta_System_Lemma/Cardinal_Library.thy @@ -0,0 +1,708 @@ +section\Cardinal Arithmetic under Choice\label{sec:cardinal-lib}\ + +theory Cardinal_Library + imports + ZF_Library + ZF.Cardinal_AC + +begin + +text\This theory includes results on cardinalities that depend on $\AC$\ + + +subsection\Results on cardinal exponentiation\ + +text\Non trivial instances of cardinal exponentiation require that + the relevant function spaces are well-ordered, hence this + implies a strong use of choice.\ + +lemma cexp_eqpoll_cong: + assumes + "A \ A'" "B \ B'" + shows + "A\<^bsup>\B\<^esup> = A'\<^bsup>\B'\<^esup>" + unfolding cexp_def using cardinal_eqpoll_iff + function_space_eqpoll_cong assms + by simp + +lemma cexp_cexp_cmult: "(\\<^bsup>\\1\<^esup>)\<^bsup>\\2\<^esup> = \\<^bsup>\\2 \ \1\<^esup>" +proof - + have "(\\<^bsup>\\1\<^esup>)\<^bsup>\\2\<^esup> = (\1 \ \)\<^bsup>\\2\<^esup>" + using cardinal_eqpoll + by (intro cexp_eqpoll_cong) (simp_all add:cexp_def) + also + have " \ = \\<^bsup>\\2 \ \1\<^esup>" + unfolding cexp_def using curry_eqpoll cardinal_cong by blast + also + have " \ = \\<^bsup>\\2 \ \1\<^esup>" + using cardinal_eqpoll[THEN eqpoll_sym] + unfolding cmult_def by (intro cexp_eqpoll_cong) (simp) + finally + show ?thesis . +qed + +lemma cardinal_Pow: "|Pow(X)| = 2\<^bsup>\X\<^esup>" \ \Perhaps it's better with |X|\ + using cardinal_eqpoll_iff[THEN iffD2, OF Pow_eqpoll_function_space] + unfolding cexp_def by simp + +lemma cantor_cexp: + assumes "Card(\)" + shows "\ < 2\<^bsup>\\\<^esup>" + using assms Card_is_Ord Card_cexp +proof (intro not_le_iff_lt[THEN iffD1] notI) + assume "2\<^bsup>\\\<^esup> \ \" + then + have "|Pow(\)| \ \" + using cardinal_Pow by simp + with assms + have "Pow(\) \ \" + using cardinal_eqpoll_iff Card_le_imp_lepoll Card_cardinal_eq + by auto + then + obtain g where "g \ inj(Pow(\), \)" + by blast + then + show "False" + using cantor_inj by simp +qed simp + +lemma cexp_left_mono: + assumes "\1 \ \2" + shows "\1\<^bsup>\\\<^esup> \ \2\<^bsup>\\\<^esup>" + (* \ \short, unreadable proof: \ + unfolding cexp_def + using subset_imp_lepoll[THEN lepoll_imp_Card_le] + assms le_subset_iff[THEN iffD1, OF assms] + Pi_weaken_type[of _ _ "\_. \1" "\_. \2"] by auto *) +proof - + from assms + have "\1 \ \2" + using le_subset_iff by simp + then + have "\ \ \1 \ \ \ \2" + using Pi_weaken_type by auto + then + show ?thesis unfolding cexp_def + using lepoll_imp_Card_le subset_imp_lepoll by simp +qed + +lemma cantor_cexp': + assumes "2 \ \" "Card(\)" + shows "\ < \\<^bsup>\\\<^esup>" + using cexp_left_mono assms cantor_cexp lt_trans2 by blast + +lemma InfCard_cexp: + assumes "2 \ \" "InfCard(\)" + shows "InfCard(\\<^bsup>\\\<^esup>)" + using assms cantor_cexp'[THEN leI] le_trans Card_cexp + unfolding InfCard_def by auto + +lemmas InfCard_cexp' = InfCard_cexp[OF nats_le_InfCard, simplified] + \ \\<^term>\InfCard(\) \ InfCard(\) \ InfCard(\\<^bsup>\\\<^esup>)\\ + + +subsection\Miscellaneous\ + +lemma cardinal_RepFun_le: "|{f(a) . a\A}| \ |A|" +proof - + have "(\x\A. f(x)) \ surj(A, {f(a) . a\A})" + unfolding surj_def using lam_funtype by auto + then + show ?thesis + using surj_implies_cardinal_le by blast +qed + +lemma subset_imp_le_cardinal: "A \ B \ |A| \ |B|" + using subset_imp_lepoll[THEN lepoll_imp_Card_le] . + +lemma lt_cardinal_imp_not_subset: "|A| < |B| \ \ B \ A" + using subset_imp_le_cardinal le_imp_not_lt by blast + +lemma cardinal_lt_csucc_iff: "Card(K) \ |K'| < K\<^sup>+ \ |K'| \ K" + by (simp add: Card_lt_csucc_iff) + +lemma cardinal_UN_le_nat: + "(\i. i\\ \ |X(i)| \ \) \ |\i\\. X(i)| \ \" + by (simp add: cardinal_UN_le InfCard_nat) + +lemma leqpoll_imp_cardinal_UN_le: + notes [dest] = InfCard_is_Card Card_is_Ord + assumes "InfCard(K)" "J \ K" "\i. i\J \ |X(i)| \ K" + shows "|\i\J. X(i)| \ K" +proof - + from \J \ K\ + obtain f where "f \ inj(J,K)" by blast + define Y where "Y(k) \ if k\range(f) then X(converse(f)`k) else 0" for k + have "i\J \ f`i \ K" for i + using inj_is_fun[OF \f \ inj(J,K)\] by auto + have "(\i\J. X(i)) \ (\i\K. Y(i))" + proof (standard, elim UN_E) + fix x i + assume "i\J" "x\X(i)" + with \f \ inj(J,K)\ \i\J \ f`i \ K\ + have "x \ Y(f`i)" "f`i \ K" + unfolding Y_def + using inj_is_fun[OF \f \ inj(J,K)\] + right_inverse apply_rangeI by auto + then + show "x \ (\i\K. Y(i))" by auto + qed + then + have "|\i\J. X(i)| \ |\i\K. Y(i)|" + unfolding Y_def using subset_imp_le_cardinal by simp + with assms \\i. i\J \ f`i \ K\ + show "|\i\J. X(i)| \ K" + using inj_converse_fun[OF \f \ inj(J,K)\] unfolding Y_def + by (rule_tac le_trans[OF _ cardinal_UN_le]) (auto intro:Ord_0_le)+ +qed + +lemma cardinal_lt_csucc_iff': + includes Ord_dests + assumes "Card(\)" + shows "\ < |X| \ \\<^sup>+ \ |X|" + using assms cardinal_lt_csucc_iff[of \ X] Card_csucc[of \] + not_le_iff_lt[of "\\<^sup>+" "|X|"] not_le_iff_lt[of "|X|" \] + by blast + +lemma lepoll_imp_subset_bij: "X \ Y \ (\Z. Z \ Y \ Z \ X)" +proof + assume "X \ Y" + then + obtain j where "j \ inj(X,Y)" + by blast + then + have "range(j) \ Y" "j \ bij(X,range(j))" + using inj_bij_range inj_is_fun range_fun_subset_codomain + by blast+ + then + show "\Z. Z \ Y \ Z \ X" + using eqpoll_sym unfolding eqpoll_def + by force +next + assume "\Z. Z \ Y \ Z \ X" + then + obtain Z f where "f \ bij(Z,X)" "Z \ Y" + unfolding eqpoll_def by force + then + have "converse(f) \ inj(X,Y)" + using bij_is_inj inj_weaken_type bij_converse_bij by blast + then + show "X \ Y" by blast +qed + +text\The following result proves to be very useful when combining + \<^term>\cardinal\ and \<^term>\eqpoll\ in a calculation.\ + +lemma cardinal_Card_eqpoll_iff: "Card(\) \ |X| = \ \ X \ \" + using Card_cardinal_eq[of \] cardinal_eqpoll_iff[of X \] by auto + \ \Compare @{thm "le_Card_iff"}\ + +lemma lepoll_imp_lepoll_cardinal: assumes "X \ Y" shows "X \ |Y|" + using assms cardinal_Card_eqpoll_iff[of "|Y|" Y] + lepoll_eq_trans[of _ _ "|Y|"] by simp + +lemma lepoll_Un: + assumes "InfCard(\)" "A \ \" "B \ \" + shows "A \ B \ \" +proof - + have "A \ B \ sum(A,B)" + using Un_lepoll_sum . + moreover + note assms + moreover from this + have "|sum(A,B)| \ \ \ \" + using sum_lepoll_mono[of A \ B \] lepoll_imp_Card_le + unfolding cadd_def by auto + ultimately + show ?thesis + using InfCard_cdouble_eq Card_cardinal_eq + InfCard_is_Card Card_le_imp_lepoll[of "sum(A,B)" \] + lepoll_trans[of "A\B"] + by auto +qed + +lemma cardinal_Un_le: + assumes "InfCard(\)" "|A| \ \" "|B| \ \" + shows "|A \ B| \ \" + using assms lepoll_Un le_Card_iff InfCard_is_Card by auto + +text\This is the unconditional version under choice of + @{thm Cardinal.Finite_cardinal_iff}.\ +lemma Finite_cardinal_iff': "Finite(|i|) \ Finite(i)" + using cardinal_eqpoll_iff eqpoll_imp_Finite_iff by fastforce + +lemma cardinal_subset_of_Card: + assumes "Card(\)" "a \ \" + shows "|a| < \ \ |a| = \" +proof - + from assms + have "|a| < |\| \ |a| = |\|" + using subset_imp_le_cardinal le_iff by simp + with assms + show ?thesis + using Card_cardinal_eq by simp +qed + +lemma cardinal_cases: + includes Ord_dests + shows "Card(\) \ |X| < \ \ \ |X| \ \" + using not_le_iff_lt + by auto + + +subsection\Countable and uncountable sets\ + +\ \Kunen's Definition I.10.5\ +definition + countable :: "i\o" where + "countable(X) \ X \ \" + +lemma countableI[intro]: "X \ \ \ countable(X)" + unfolding countable_def by simp + +lemma countableD[dest]: "countable(X) \ X \ \" + unfolding countable_def by simp + +lemma countable_iff_cardinal_le_nat: "countable(X) \ |X| \ \" + using le_Card_iff[of \ X] Card_nat + unfolding countable_def by simp + +lemma lepoll_countable: "X \ Y \ countable(Y) \ countable(X)" + using lepoll_trans[of X Y] by blast + +\ \Next lemma can be proved without using AC\ +lemma surj_countable: "countable(X) \ f \ surj(X,Y) \ countable(Y)" + using surj_implies_cardinal_le[of f X Y, THEN le_trans] + countable_iff_cardinal_le_nat by simp + +lemma Finite_imp_countable: "Finite(X) \ countable(X)" + unfolding Finite_def + by (auto intro:InfCard_nat nats_le_InfCard[of _ \, + THEN le_imp_lepoll] dest!:eq_lepoll_trans[of X _ \]) + +lemma countable_imp_countable_UN: + assumes "countable(J)" "\i. i\J \ countable(X(i))" + shows "countable(\i\J. X(i))" + using assms leqpoll_imp_cardinal_UN_le[of \ J X] InfCard_nat + countable_iff_cardinal_le_nat + by auto + +lemma countable_union_countable: + assumes "\x. x \ C \ countable(x)" "countable(C)" + shows "countable(\C)" + using assms countable_imp_countable_UN[of C "\x. x"] by simp + +abbreviation + uncountable :: "i\o" where + "uncountable(X) \ \ countable(X)" + +lemma uncountable_iff_nat_lt_cardinal: + "uncountable(X) \ \ < |X|" + using countable_iff_cardinal_le_nat not_le_iff_lt by simp + +lemma uncountable_not_empty: "uncountable(X) \ X \ 0" + using empty_lepollI by auto + +lemma uncountable_imp_Infinite: "uncountable(X) \ Infinite(X)" + using uncountable_iff_nat_lt_cardinal[of X] lepoll_nat_imp_Infinite[of X] + cardinal_le_imp_lepoll[of \ X] leI + by simp + +lemma uncountable_not_subset_countable: + assumes "countable(X)" "uncountable(Y)" + shows "\ (Y \ X)" + using assms lepoll_trans subset_imp_lepoll[of Y X] + by blast + + +subsection\Results on Alephs\ + +lemma nat_lt_Aleph1: "\ < \\<^bsub>1\<^esub>" + by (simp add: Aleph_def lt_csucc) + +lemma zero_lt_Aleph1: "0 < \\<^bsub>1\<^esub>" + by (rule lt_trans[of _ "\"], auto simp add: ltI nat_lt_Aleph1) + +lemma le_aleph1_nat: "Card(k) \ k<\\<^bsub>1\<^esub> \ k \ \" + by (simp add: Aleph_def Card_lt_csucc_iff Card_nat) + +lemma Aleph_succ: "\\<^bsub>succ(\)\<^esub> = \\<^bsub>\\<^esub>\<^sup>+" + unfolding Aleph_def by simp + +lemma lesspoll_aleph_plus_one: + assumes "Ord(\)" + shows "d \ \\<^bsub>succ(\)\<^esub> \ d \ \\<^bsub>\\<^esub>" + using assms lesspoll_csucc Aleph_succ Card_is_Ord by simp + +lemma cardinal_Aleph [simp]: "Ord(\) \ |\\<^bsub>\\<^esub>| = \\<^bsub>\\<^esub>" + using Card_cardinal_eq by simp + +\ \Could be proved without using AC\ +lemma Aleph_lesspoll_increasing: + includes Aleph_intros + shows "a < b \ \\<^bsub>a\<^esub> \ \\<^bsub>b\<^esub>" + using cardinal_lt_iff_lesspoll[of "\\<^bsub>a\<^esub>" "\\<^bsub>b\<^esub>"] Card_cardinal_eq[of "\\<^bsub>b\<^esub>"] + lt_Ord lt_Ord2 Card_Aleph[THEN Card_is_Ord] by auto + +lemma uncountable_iff_subset_eqpoll_Aleph1: + includes Ord_dests + notes Aleph_zero_eq_nat[simp] Card_nat[simp] Aleph_succ[simp] + shows "uncountable(X) \ (\S. S \ X \ S \ \\<^bsub>1\<^esub>)" +proof + assume "uncountable(X)" + then + have "\\<^bsub>1\<^esub> \ X" + using uncountable_iff_nat_lt_cardinal cardinal_lt_csucc_iff' + cardinal_le_imp_lepoll by force + then + obtain S where "S \ X" "S \ \\<^bsub>1\<^esub>" + using lepoll_imp_subset_bij by auto + then + show "\S. S \ X \ S \ \\<^bsub>1\<^esub>" + using cardinal_cong Card_csucc[of \] Card_cardinal_eq by auto +next + assume "\S. S \ X \ S \ \\<^bsub>1\<^esub>" + then + have "\\<^bsub>1\<^esub> \ X" + using subset_imp_lepoll[THEN [2] eq_lepoll_trans, of "\\<^bsub>1\<^esub>" _ X, + OF eqpoll_sym] by auto + then + show "uncountable(X)" + using Aleph_lesspoll_increasing[of 0 1, THEN [2] lesspoll_trans1, + of "\\<^bsub>1\<^esub>"] lepoll_trans[of "\\<^bsub>1\<^esub>" X \] + by auto +qed + +lemma lt_Aleph_imp_cardinal_UN_le_nat: "function(G) \ domain(G) \ \ \ + \n\domain(G). |G`n|<\\<^bsub>1\<^esub> \ |\n\domain(G). G`n|\\" +proof - + assume "function(G)" + let ?N="domain(G)" and ?R="\n\domain(G). G`n" + assume "?N \ \" + assume Eq1: "\n\?N. |G`n|<\\<^bsub>1\<^esub>" + { + fix n + assume "n\?N" + with Eq1 have "|G`n| \ \" + using le_aleph1_nat by simp + } + then + have "n\?N \ |G`n| \ \" for n . + with \?N \ \\ + show ?thesis + using InfCard_nat leqpoll_imp_cardinal_UN_le by simp +qed + +lemma Aleph1_eq_cardinal_vimage: "f:\\<^bsub>1\<^esub>\\ \ \n\\. |f-``{n}| = \\<^bsub>1\<^esub>" +proof - + assume "f:\\<^bsub>1\<^esub>\\" + then + have "function(f)" "domain(f) = \\<^bsub>1\<^esub>" "range(f)\\" + by (simp_all add: domain_of_fun fun_is_function range_fun_subset_codomain) + let ?G="\n\range(f). f-``{n}" + from \f:\\<^bsub>1\<^esub>\\\ + have "range(f) \ \" by (simp add: range_fun_subset_codomain) + then + have "domain(?G) \ \" + using subset_imp_lepoll by simp + have "function(?G)" by (simp add:function_lam) + from \f:\\<^bsub>1\<^esub>\\\ + have "n\\ \ f-``{n} \ \\<^bsub>1\<^esub>" for n + using Pi_vimage_subset by simp + with \range(f) \ \\ + have "\\<^bsub>1\<^esub> = (\n\range(f). f-``{n})" + proof (intro equalityI, intro subsetI) + fix x + assume "x \ \\<^bsub>1\<^esub>" + with \f:\\<^bsub>1\<^esub>\\\ \function(f)\ \domain(f) = \\<^bsub>1\<^esub>\ + have "x \ f-``{f`x}" "f`x \ range(f)" + using function_apply_Pair vimage_iff apply_rangeI by simp_all + then + show "x \ (\n\range(f). f-``{n})" by auto + qed auto + { + assume "\n\range(f). |f-``{n}| < \\<^bsub>1\<^esub>" + then + have "\n\domain(?G). |?G`n| < \\<^bsub>1\<^esub>" + using zero_lt_Aleph1 by (auto) + with \function(?G)\ \domain(?G) \ \\ + have "|\n\domain(?G). ?G`n|\\" + using lt_Aleph_imp_cardinal_UN_le_nat by blast + then + have "|\n\range(f). f-``{n}|\\" by simp + with \\\<^bsub>1\<^esub> = _\ + have "|\\<^bsub>1\<^esub>| \ \" by simp + then + have "\\<^bsub>1\<^esub> \ \" + using Card_Aleph Card_cardinal_eq + by simp + then + have "False" + using nat_lt_Aleph1 by (blast dest:lt_trans2) + } + with \range(f)\\\ + obtain n where "n\\" "\(|f -`` {n}| < \\<^bsub>1\<^esub>)" + by blast + moreover from this + have "\\<^bsub>1\<^esub> \ |f-``{n}|" + using not_lt_iff_le Card_is_Ord by auto + moreover + note \n\\ \ f-``{n} \ \\<^bsub>1\<^esub>\ + ultimately + show ?thesis + using subset_imp_le_cardinal[THEN le_anti_sym, of _ "\\<^bsub>1\<^esub>"] + Card_Aleph Card_cardinal_eq by auto +qed + +\ \There is some asymmetry between assumptions and conclusion + (\<^term>\(\)\ versus \<^term>\cardinal\)\ +lemma eqpoll_Aleph1_cardinal_vimage: + assumes "X \ \\<^bsub>1\<^esub>" "f : X \ \" + shows "\n\\. |f-``{n}| = \\<^bsub>1\<^esub>" +proof - + from assms + obtain g where "g\bij(\\<^bsub>1\<^esub>,X)" + using eqpoll_sym by blast + with \f : X \ \\ + have "f O g : \\<^bsub>1\<^esub> \ \" "converse(g) \ bij(X, \\<^bsub>1\<^esub>)" + using bij_is_fun comp_fun bij_converse_bij by blast+ + then + obtain n where "n\\" "|(f O g)-``{n}| = \\<^bsub>1\<^esub>" + using Aleph1_eq_cardinal_vimage by auto + then + have "\\<^bsub>1\<^esub> = |converse(g) `` (f -``{n})|" + using image_comp converse_comp + unfolding vimage_def by simp + also from \converse(g) \ bij(X, \\<^bsub>1\<^esub>)\ \f: X\ \\ + have "\ = |f -``{n}|" + using range_of_subset_eqpoll[of "converse(g)" X _ "f -``{n}"] + bij_is_inj cardinal_cong bij_is_fun eqpoll_sym Pi_vimage_subset + by fastforce + finally + show ?thesis using \n\\\ by auto +qed + + +subsection\Applications of transfinite recursive constructions\ + +definition + rec_constr :: "[i,i] \ i" where + "rec_constr(f,\) \ transrec(\,\a g. f`(g``a))" + +text\The function \<^term>\rec_constr\ allows to perform \<^emph>\recursive + constructions\: given a choice function on the powerset of some + set, a transfinite sequence is created by successively choosing + some new element. + + The next result explains its use.\ + +lemma rec_constr_unfold: "rec_constr(f,\) = f`({rec_constr(f,\). \\\})" + using def_transrec[OF rec_constr_def, of f \] image_lam by simp + +lemma rec_constr_type: assumes "f:Pow(G)\ G" "Ord(\)" + shows "rec_constr(f,\) \ G" + using assms(2,1) + by (induct rule:trans_induct) + (subst rec_constr_unfold, rule apply_type[of f "Pow(G)" "\_. G"], auto) + +text\The next lemma is an application of recursive constructions. + It works under the assumption that whenever the already constructed + subsequence is small enough, another element can be added.\ + +lemma bounded_cardinal_selection: + includes Ord_dests + assumes + "\X. |X| < \ \ X \ G \ \a\G. \s\X. Q(s,a)" "b\G" "Card(\)" + shows + "\S. S : \ \ G \ (\\ \ \. \\ \ \. \<\ \ Q(S`\,S`\))" +proof - + let ?cdlt\="{X\Pow(G) . |X|<\}" \ \“cardinal less than \<^term>\\\”\ + and ?inQ="\Y.{a\G. \s\Y. Q(s,a)}" + from assms + have "\Y \ ?cdlt\. \a. a \ ?inQ(Y)" + by blast + then + have "\f. f \ Pi(?cdlt\,?inQ)" + using AC_ball_Pi[of ?cdlt\ ?inQ] by simp + then + obtain f where f_type:"f \ Pi(?cdlt\,?inQ)" + by auto + moreover + define Cb where "Cb \ \_\Pow(G)-?cdlt\. b" + moreover from \b\G\ + have "Cb \ Pow(G)-?cdlt\ \ G" + unfolding Cb_def by simp + moreover + note \Card(\)\ + ultimately + have "f \ Cb : (\x\Pow(G). ?inQ(x) \ G)" using + fun_Pi_disjoint_Un[ of f ?cdlt\ ?inQ Cb "Pow(G)-?cdlt\" "\_.G"] + Diff_partition[of "{X\Pow(G). |X|<\}" "Pow(G)", OF Collect_subset] + by auto + moreover + have "?inQ(x) \ G = G" for x by auto + ultimately + have "f \ Cb : Pow(G) \ G" by simp + define S where "S\\\\\. rec_constr(f \ Cb, \)" + from \f \ Cb: Pow(G) \ G\ \Card(\)\ + have "S : \ \ G" + using Ord_in_Ord unfolding S_def + by (intro lam_type rec_constr_type) auto + moreover + have "\\\\. \\\\. \ < \ \ Q(S ` \, S ` \)" + proof (intro ballI impI) + fix \ \ + assume "\\\" + with \Card(\)\ + have "{rec_constr(f \ Cb, x) . x\\} = {S`x . x \ \}" + using Ord_trans[OF _ _ Card_is_Ord, of _ \ \] + unfolding S_def + by auto + moreover from \\\\\ \S : \ \ G\ \Card(\)\ + have "{S`x . x \ \} \ G" + using Ord_trans[OF _ _ Card_is_Ord, of _ \ \] + apply_type[of S \ "\_. G"] by auto + moreover from \Card(\)\ \\\\\ + have "|{S`x . x \ \}| < \" + using cardinal_RepFun_le[of \] Ord_in_Ord + lt_trans1[of "|{S`x . x \ \}|" "|\|" \] + Card_lt_iff[THEN iffD2, of \ \, OF _ _ ltI] + by force + moreover + have "\x\\. Q(S`x, f ` {S`x . x \ \})" + proof - + from calculation and f_type + have "f ` {S`x . x \ \} \ {a\G. \x\\. Q(S`x,a)}" + using apply_type[of f ?cdlt\ ?inQ "{S`x . x \ \}"] + by blast + then + show ?thesis by simp + qed + moreover + assume "\\\" "\ < \" + moreover + note \\\\\ \Cb \ Pow(G)-?cdlt\ \ G\ + ultimately + show "Q(S ` \, S ` \)" + using fun_disjoint_apply1[of "{S`x . x \ \}" Cb f] + domain_of_fun[of Cb] ltD[of \ \] + by (subst (2) S_def, auto) (subst rec_constr_unfold, auto) + qed + ultimately + show ?thesis by blast +qed + +text\The following basic result can, in turn, be proved by a + bounded-cardinal selection.\ +lemma Infinite_iff_lepoll_nat: "Infinite(X) \ \ \ X" +proof + assume "Infinite(X)" + then + obtain b where "b\X" + using Infinite_not_empty by auto + { + fix Y + assume "|Y| < \" + then + have "Finite(Y)" + using Finite_cardinal_iff' ltD nat_into_Finite by blast + with \Infinite(X)\ + have "X \ Y" by auto + } + with \b\X\ + obtain S where "S : \ \ X" "\\\\. \\\\. \ < \ \ S`\ \ S`\" + using bounded_cardinal_selection[of \ X "\x y. x\y"] + Card_nat by blast + moreover from this + have "\ \ \ \ \ \ \ \ \\\ \ S`\ \ S`\" for \ \ + by (rule_tac lt_neq_symmetry[of "\" "\\ \. S`\ \ S`\"]) + auto + ultimately + show "\ \ X" + unfolding lepoll_def inj_def by blast +qed (intro lepoll_nat_imp_Infinite) + +lemma Infinite_InfCard_cardinal: "Infinite(X) \ InfCard(|X|)" + using lepoll_eq_trans eqpoll_sym lepoll_nat_imp_Infinite + Infinite_iff_lepoll_nat Inf_Card_is_InfCard cardinal_eqpoll + by simp + +lemma Finite_to_one_surj_imp_cardinal_eq: + assumes "F \ Finite_to_one(X,Y) \ surj(X,Y)" "Infinite(X)" + shows "|Y| = |X|" +proof - + from \F \ Finite_to_one(X,Y) \ surj(X,Y)\ + have "X = (\y\Y. {x\X . F`x = y})" + using apply_type by fastforce + show ?thesis + proof (cases "Finite(Y)") + case True + with \X = (\y\Y. {x\X . F`x = y})\ and assms + show ?thesis + using Finite_RepFun[THEN [2] Finite_Union, of Y "\y. {x\X . F`x = y}"] + by auto + next + case False + moreover from this + have "Y \ |Y|" + using cardinal_eqpoll eqpoll_sym eqpoll_imp_lepoll by simp + moreover + note assms + moreover from calculation + have "y \ Y \ |{x\X . F`x = y}| \ |Y|" for y + using Infinite_imp_nats_lepoll[THEN lepoll_imp_Card_le, of Y + "|{x\X . F`x = y}|"] cardinal_idem by auto + ultimately + have "|\y\Y. {x\X . F`x = y}| \ |Y|" + using leqpoll_imp_cardinal_UN_le[of "|Y|" Y] + Infinite_InfCard_cardinal[of Y] by simp + moreover from \F \ Finite_to_one(X,Y) \ surj(X,Y)\ + have "|Y| \ |X|" + using surj_implies_cardinal_le by auto + moreover + note \X = (\y\Y. {x\X . F`x = y})\ + ultimately + show ?thesis + using le_anti_sym by auto + qed +qed + +lemma cardinal_map_Un: + assumes "Infinite(X)" "Finite(b)" + shows "|{a \ b . a \ X}| = |X|" +proof - + have "(\a\X. a \ b) \ Finite_to_one(X,{a \ b . a \ X})" + "(\a\X. a \ b) \ surj(X,{a \ b . a \ X})" + unfolding surj_def + proof + fix d + have "Finite({a \ X . a \ b = d})" (is "Finite(?Y(b,d))") + using \Finite(b)\ + proof (induct arbitrary:d) + case 0 + have "{a \ X . a \ 0 = d} = (if d\X then {d} else 0)" + by auto + then + show ?case by simp + next + case (cons c b) + from \c \ b\ + have "?Y(cons(c,b),d) \ (if c\d then ?Y(b,d) \ ?Y(b,d-{c}) else 0)" + by auto + with cons + show ?case + using subset_Finite + by simp + qed + moreover + assume "d \ {x \ b . x \ X}" + ultimately + show "Finite({a \ X . (\x\X. x \ b) ` a = d})" + by simp + qed (auto intro:lam_funtype) + with assms + show ?thesis + using Finite_to_one_surj_imp_cardinal_eq by fast +qed + +end \ No newline at end of file diff --git a/thys/Delta_System_Lemma/Cofinality.thy b/thys/Delta_System_Lemma/Cofinality.thy new file mode 100644 --- /dev/null +++ b/thys/Delta_System_Lemma/Cofinality.thy @@ -0,0 +1,1205 @@ +section\Cofinality\label{sec:cofinality}\ + +theory Cofinality + imports + ZF_Library +begin + + +subsection\Basic results and definitions\ + +text\A set \<^term>\X\ is \<^emph>\cofinal\ in \<^term>\A\ (with respect to the relation + \<^term>\r\) if every element of \<^term>\A\ is “bounded + above” by some element of \<^term>\X\. Note that \<^term>\X\ does not need + to be a subset of \<^term>\A\.\ +definition + cofinal :: "[i,i,i] \ o" where + "cofinal(X,A,r) \ \a\A. \x\X. \a,x\\r \ a = x" + +(* +(* Alternative definitions *) +definition + cofinal_predic :: "[i,i,[i,i]\o] \ o" where + "cofinal_predic(X,A,r) \ \a\A. \x\X. r(a,x) \ a = x" + +definition + f_cofinal :: "[i\i,i,i,i] \ o" where + "f_cofinal(f,C,A,r) \ \a\A. \x\C. \a,f(x)\\r \ a = f(x)" + +(* The next definition doesn't work if 0 is the top element of A. + But it works for limit ordinals. *) +definition + cofinal_fun' :: "[i,i,i] \ o" where + "cofinal_fun'(f,A,r) == f_cofinal(\x. f`x,domain(f),A, r)" +*) + +text\A function is cofinal if it range is.\ +definition + cofinal_fun :: "[i,i,i] \ o" where + "cofinal_fun(f,A,r) \ \a\A. \x\domain(f). \a,f`x\\r \ a = f`x" + +lemma cofinal_funI: + assumes "\a. a\A \ \x\domain(f). \a,f`x\\r \ a = f`x" + shows "cofinal_fun(f,A,r)" + using assms unfolding cofinal_fun_def by simp + +lemma cofinal_funD: + assumes "cofinal_fun(f,A,r)" "a\A" + shows "\x\domain(f). \a,f`x\\r \ a = f`x" + using assms unfolding cofinal_fun_def by simp + +lemma cofinal_in_cofinal: + assumes + "trans(r)" "cofinal(Y,X,r)" "cofinal(X,A,r)" + shows + "cofinal(Y,A,r)" + unfolding cofinal_def +proof + fix a + assume "a\A" + moreover from \cofinal(X,A,r)\ + have "b\A\\x\X. \b,x\\r \ b=x" for b + unfolding cofinal_def by simp + ultimately + obtain y where "y\X" "\a,y\\r \ a=y" by auto + moreover from \cofinal(Y,X,r)\ + have "c\X\\y\Y. \c,y\\r \ c=y" for c + unfolding cofinal_def by simp + ultimately + obtain x where "x\Y" "\y,x\\r \ y=x" by auto + with \a\A\ \y\X\ \\a,y\\r \ a=y\ \trans(r)\ + show "\x\Y. \a,x\\r \ a=x" unfolding trans_def by auto +qed + +lemma codomain_is_cofinal: + assumes "cofinal_fun(f,A,r)" "f:C \ D" + shows "cofinal(D,A,r)" + unfolding cofinal_def +proof + fix b + assume "b \ A" + moreover from assms + have "a\A \ \x\domain(f). \a, f ` x\ \ r \ a = f`x" for a + unfolding cofinal_fun_def by simp + ultimately + obtain x where "x\domain(f)" "\b, f ` x\ \ r \ b = f`x" + by blast + moreover from \f:C \ D\ \x\domain(f)\ + have "f`x\D" + using domain_of_fun apply_rangeI by simp + ultimately + show "\y\D. \b, y\ \ r \ b = y" by auto +qed + +lemma cofinal_range_iff_cofinal_fun: + assumes "function(f)" + shows "cofinal(range(f),A,r) \ cofinal_fun(f,A,r)" + unfolding cofinal_fun_def +proof (intro iffI ballI) + fix a + assume "a\A" \cofinal(range(f),A,r)\ + then + obtain y where "y\range(f)" "\a,y\ \ r \ a = y" + unfolding cofinal_def by blast + moreover from this + obtain x where "\x,y\\f" + unfolding range_def domain_def converse_def by blast + moreover + note \function(f)\ + ultimately + have "\a, f ` x\ \ r \ a = f ` x" + using function_apply_equality by blast + with \\x,y\\f\ + show "\x\domain(f). \a, f ` x\ \ r \ a = f ` x" by blast +next + assume "\a\A. \x\domain(f). \a, f ` x\ \ r \ a = f ` x" + with assms + show "cofinal(range(f), A, r)" + using function_apply_Pair[of f] unfolding cofinal_def by fast +qed + +lemma cofinal_comp: + assumes + "f\ mono_map(C,s,D,r)" "cofinal_fun(f,D,r)" "h:B \ C" "cofinal_fun(h,C,s)" + "trans(r)" + shows "cofinal_fun(f O h,D,r)" + unfolding cofinal_fun_def +proof + fix a + from \f\ mono_map(C,s,D,r)\ + have "f:C \ D" + using mono_map_is_fun by simp + with \h:B \ C\ + have "domain(f) = C" "domain(h) = B" + using domain_of_fun by simp_all + moreover + assume "a \ D" + moreover + note \cofinal_fun(f,D,r)\ + ultimately + obtain c where "c\C" "\a, f ` c\ \ r \ a = f ` c" + unfolding cofinal_fun_def by blast + with \cofinal_fun(h,C,s)\ \domain(h) = B\ + obtain b where "b \ B" "\c, h ` b\ \ s \ c = h ` b" + unfolding cofinal_fun_def by blast + moreover from this and \h:B \ C\ + have "h`b \ C" by simp + moreover + note \f \ mono_map(C,s,D,r)\ \c\C\ + ultimately + have "\f`c, f` (h ` b)\ \ r \ f`c = f` (h ` b)" + unfolding mono_map_def by blast + with \\a, f ` c\ \ r \ a = f ` c\ \trans(r)\ \h:B \ C\ \b\B\ + have "\a, (f O h) ` b\ \ r \ a = (f O h) ` b" + using transD by auto + moreover from \h:B \ C\ \domain(f) = C\ \domain(h) = B\ + have "domain(f O h) = B" + using range_fun_subset_codomain by blast + moreover + note \b\B\ + ultimately + show "\x\domain(f O h). \a, (f O h) ` x\ \ r \ a = (f O h) ` x" by blast +qed + +definition + cf_fun :: "[i,i] \ o" where + "cf_fun(f,\) \ cofinal_fun(f,\,Memrel(\))" + +lemma cf_funI[intro!]: "cofinal_fun(f,\,Memrel(\)) \ cf_fun(f,\)" + unfolding cf_fun_def by simp + +lemma cf_funD[dest!]: "cf_fun(f,\) \ cofinal_fun(f,\,Memrel(\))" + unfolding cf_fun_def by simp + +lemma cf_fun_comp: + assumes + "Ord(\)" "f\ mono_map(C,s,\,Memrel(\))" "cf_fun(f,\)" + "h:B \ C" "cofinal_fun(h,C,s)" + shows "cf_fun(f O h,\)" + using assms cofinal_comp[OF _ _ _ _ trans_Memrel] by auto + +definition + cf :: "i\i" where + "cf(\) \ \ \. \A. A\\ \ cofinal(A,\,Memrel(\)) \ \ = ordertype(A,Memrel(\))" + +lemma Ord_cf [TC]: "Ord(cf(\))" + unfolding cf_def using Ord_Least by simp + +lemma gamma_cofinal_gamma: + assumes "Ord(\)" + shows "cofinal(\,\,Memrel(\))" + unfolding cofinal_def by auto + +lemma cf_is_ordertype: + assumes "Ord(\)" + shows "\A. A\\ \ cofinal(A,\,Memrel(\)) \ cf(\) = ordertype(A,Memrel(\))" + (is "?P(cf(\))") + using gamma_cofinal_gamma LeastI[of ?P \] ordertype_Memrel[symmetric] assms + unfolding cf_def by blast + +lemma cf_fun_succ': + assumes "Ord(\)" "Ord(\)" "f:\\succ(\)" + shows "(\x\\. f`x=\) \ cf_fun(f,succ(\))" +proof (intro iffI) + assume "(\x\\. f`x=\)" + with assms + show "cf_fun(f,succ(\))" + using domain_of_fun[OF \f:\\succ(\)\] + unfolding cf_fun_def cofinal_fun_def by auto +next + assume "cf_fun(f,succ(\))" + with assms + obtain x where "x\\" "\\,f`x\ \ Memrel(succ(\)) \ \ = f ` x" + using domain_of_fun[OF \f:\\succ(\)\] + unfolding cf_fun_def cofinal_fun_def by auto + moreover from \Ord(\)\ + have "\\,y\ \ Memrel(succ(\))" for y + using foundation unfolding Memrel_def by blast + ultimately + show "\x\\. f ` x = \" by blast +qed + +lemma cf_fun_succ: + "Ord(\) \ f:1\succ(\) \ f`0=\ \ cf_fun(f,succ(\))" + using cf_fun_succ' by blast + +lemma ordertype_0_not_cofinal_succ: + assumes "ordertype(A,Memrel(succ(i))) = 0" "A\succ(i)" "Ord(i)" + shows "\cofinal(A,succ(i),Memrel(succ(i)))" +proof + have 1:"ordertype(A,Memrel(succ(i))) = ordertype(0,Memrel(0))" + using \ordertype(A,Memrel(succ(i))) = 0\ ordertype_0 by simp + from \A\succ(i)\ \Ord(i)\ + have "\f. f \ \A, Memrel(succ(i))\ \ \0, Memrel(0)\" + using well_ord_Memrel well_ord_subset + ordertype_eq_imp_ord_iso[OF 1] Ord_0 by blast + then + have "A=0" + using ord_iso_is_bij bij_imp_eqpoll eqpoll_0_is_0 by blast + moreover + assume "cofinal(A, succ(i), Memrel(succ(i)))" + moreover + note \Ord(i)\ + ultimately + show "False" + using not_mem_empty unfolding cofinal_def by auto +qed + +text\I thank Edwin Pacheco Rodríguez for the following lemma.\ +lemma cf_succ: + assumes "Ord(\)" + shows "cf(succ(\)) = 1" +proof - + define f where "f \ {\0,\\}" + then + have "f : 1\succ(\)" "f`0 = \" + using fun_extend3[of 0 0 "succ(\)" 0 \] singleton_0 by auto + with assms + have "cf_fun(f,succ(\))" + using cf_fun_succ unfolding cofinal_fun_def by simp + from \f:1\succ(\)\ + have "0\domain(f)" using domain_of_fun by simp + define A where "A={f`0}" + with \cf_fun(f,succ(\))\ \0\domain(f)\ \f`0=\\ + have "cofinal(A,succ(\),Memrel(succ(\)))" + unfolding cofinal_def cofinal_fun_def by simp + moreover from \f`0=\\ \A={f`0}\ + have "A \ succ(\)" unfolding succ_def by auto + moreover from \Ord(\)\ \A\ succ(\)\ + have "well_ord(A,Memrel(succ(\)))" + using Ord_succ well_ord_Memrel well_ord_subset relation_Memrel by blast + moreover from \Ord(\)\ + have "\(\A. A \ succ(\) \ cofinal(A, succ(\), Memrel(succ(\))) \ 0 = ordertype(A, Memrel(succ(\))))" + (is "\?P(0)") + using ordertype_0_not_cofinal_succ unfolding cf_def by auto + moreover + have "1 = ordertype(A,Memrel(succ(\)))" + proof - + from \A={f`0}\ + have "A\1" using singleton_eqpoll_1 by simp + with \well_ord(A,Memrel(succ(\)))\ + show ?thesis using nat_1I ordertype_eq_n by simp + qed + ultimately + show "cf(succ(\)) = 1" using Ord_1 Least_equality[of ?P 1] + unfolding cf_def by blast +qed + +lemma cf_zero [simp]: + "cf(0) = 0" + unfolding cf_def cofinal_def using + ordertype_0 subset_empty_iff Least_le[of _ 0] by auto + +lemma surj_is_cofinal: "f \ surj(\,\) \ cf_fun(f,\)" + unfolding surj_def cofinal_fun_def cf_fun_def + using domain_of_fun by force + +lemma cf_zero_iff: "Ord(\) \ cf(\) = 0 \ \ = 0" +proof (intro iffI) + assume "\ = 0" "Ord(\)" + then + show "cf(\) = 0" using cf_zero by simp +next + assume "cf(\) = 0" "Ord(\)" + moreover from this + obtain A where "A\\" "cf(\) = ordertype(A,Memrel(\))" + "cofinal(A,\,Memrel(\))" + using cf_is_ordertype by blast + ultimately + have "cofinal(0,\,Memrel(\))" + using ordertype_zero_imp_zero[of A "Memrel(\)"] by simp + then + show "\=0" + unfolding cofinal_def by blast +qed + +\ \TODO: define Succ (predicate for successor ordinals)\ +lemma cf_eq_one_iff: + assumes "Ord(\)" + shows "cf(\) = 1 \ (\\. Ord(\) \ \ = succ(\))" +proof (intro iffI) + assume "\\. Ord(\) \ \ = succ(\)" + then + show "cf(\) = 1" using cf_succ by auto +next + assume "cf(\) = 1" + moreover from assms + obtain A where "A \ \" "cf(\) = ordertype(A,Memrel(\))" + "cofinal(A,\,Memrel(\))" + using cf_is_ordertype by blast + ultimately + have "ordertype(A,Memrel(\)) = 1" by simp + moreover + define f where "f\converse(ordermap(A,Memrel(\)))" + moreover from this \ordertype(A,Memrel(\)) = 1\ \A \ \\ assms + have "f \ surj(1,A)" + using well_ord_subset[OF well_ord_Memrel, THEN ordermap_bij, + THEN bij_converse_bij, of \ A] bij_is_surj + by simp + with \cofinal(A,\,Memrel(\))\ + have "\a\\. \a, f`0\ \ Memrel(\) \ a = f`0" + unfolding cofinal_def surj_def + by auto + with assms \A \ \\ \f \ surj(1,A)\ + show "\\. Ord(\) \ \ = succ(\)" + using Ord_has_max_imp_succ[of \ "f`0"] + surj_is_fun[of f 1 A] apply_type[of f 1 "\_.A" 0] + unfolding lt_def + by (auto intro:Ord_in_Ord) +qed + +lemma ordertype_in_cf_imp_not_cofinal: + assumes + "ordertype(A,Memrel(\)) \ cf(\)" + "A \ \" + shows + "\ cofinal(A,\,Memrel(\))" +proof + note \A \ \\ + moreover + assume "cofinal(A,\,Memrel(\))" + ultimately + have "\B. B \ \ \ cofinal(B, \, Memrel(\)) \ ordertype(A,Memrel(\)) = ordertype(B, Memrel(\))" + (is "?P(ordertype(A,_))") + by blast + moreover from assms + have "ordertype(A,Memrel(\)) < cf(\)" + using Ord_cf ltI by blast + ultimately + show "False" + unfolding cf_def using less_LeastE[of ?P "ordertype(A,Memrel(\))"] + by auto +qed + +lemma cofinal_mono_map_cf: + assumes "Ord(\)" + shows "\j \ mono_map(cf(\), Memrel(cf(\)), \, Memrel(\)) . cf_fun(j,\)" +proof - + note assms + moreover from this + obtain A where "A \ \" "cf(\) = ordertype(A,Memrel(\))" + "cofinal(A,\,Memrel(\))" + using cf_is_ordertype by blast + moreover + define j where "j \ converse(ordermap(A,Memrel(\)))" + moreover from calculation + have "j :cf(\) \\<^sub>< \" + using ordertype_ord_iso[THEN ord_iso_sym, + THEN ord_iso_is_mono_map, THEN mono_map_mono, + of A "Memrel(\)" \] well_ord_Memrel[THEN well_ord_subset] + by simp + moreover from calculation + have "j \ surj(cf(\),A)" + using well_ord_Memrel[THEN well_ord_subset, THEN ordertype_ord_iso, + THEN ord_iso_sym, of \ A, THEN ord_iso_is_bij, + THEN bij_is_surj] + by simp + with \cofinal(A,\,Memrel(\))\ + have "cf_fun(j,\)" + using cofinal_range_iff_cofinal_fun[of j \ "Memrel(\)"] + surj_range[of j "cf(\)" A] surj_is_fun fun_is_function + by fastforce + with \j \ mono_map(_,_,_,_)\ + show ?thesis by auto +qed + + +subsection\The factorization lemma\ + +text\In this subsection we prove a factorization lemma for cofinal functions +into ordinals, which shows that any cofinal function between ordinals can be +“decomposed” in such a way that a commutative triangle of strictly increasing +maps arises. + +The factorization lemma has a kind of +fundamental character, in that the rest of the basic results on cofinality +(for, instance, idempotence) follow easily from it, in a more algebraic way. + +This is a consequence that the proof encapsulates uses of transfinite +recursion in the basic theory of cofinality; indeed, only one use is needed. +In the setting of Isabelle/ZF, this is convenient since the machinery of +recursion is pretty clumsy. On the downside, this way of presenting things +results in a longer proof of the factorization lemma. This approach was +taken by the author in the notes \cite{apunte_st} for an introductory course +in Set Theory. + +To organize the use of the hypotheses of the factorization lemma, +we set up a locale containing all the relevant ingredients. +\ +locale cofinal_factor = + fixes j \ \ \ f + assumes j_mono: "j :\ \\<^sub>< \" + and ords: "Ord(\)" "Ord(\)" "Limit(\)" + and f_type: "f: \ \ \" +begin + +text\Here, \<^term>\f\ is cofinal function from \<^term>\\\ to \<^term>\\\, and the +ordinal \<^term>\\\ is meant to be the cofinality of \<^term>\\\. Hence, there exists +an increasing map \<^term>\j\ from \<^term>\\\ to \<^term>\\\ by the last lemma. + +The main goal is to construct an increasing function \<^term>\g:\\\\ such that +the composition \<^term>\f O g\ is still cofinal but also increasing.\ + +definition + factor_body :: "[i,i,i] \ o" where + "factor_body(\,h,x) \ (x\\ \ j`\ \ f`x \ (\\<\ . f`(h`\) < f`x)) \ x=\" + +definition + factor_rec :: "[i,i] \ i" where + "factor_rec(\,h) \ \ x. factor_body(\,h,x)" + +txt\\<^term>\factor_rec\ is the inductive step for the definition by transfinite +recursion of the \<^emph>\factor\ function (called \<^term>\g\ above), which in +turn is obtained by minimizing the predicate \<^term>\factor_body\. Next we show +that this predicate is monotonous.\ + +lemma factor_body_mono: + assumes + "\\\" "\<\" + "factor_body(\,\x\\. G(x),x)" + shows + "factor_body(\,\x\\. G(x),x)" +proof - + from \\<\\ + have "\\\" using ltD by simp + moreover + note \\\\\ + moreover from calculation + have "\\\" using ords ltD Ord_cf Ord_trans by blast + ultimately + have "j`\ \ j`\" using j_mono mono_map_increasing by blast + moreover from \\\\\ + have "j`\\\" + using j_mono domain_of_fun apply_rangeI mono_map_is_fun by force + moreover from this + have "Ord(j`\)" + using Ord_in_Ord ords Limit_is_Ord by auto + ultimately + have "j`\ \ j`\" unfolding lt_def by blast + then + have "j`\ \ f`\ \ j`\ \ f`\" for \ using le_trans by blast + moreover + have "f`((\w\\. G(w))`y) < f`z" if "z\\" "\x<\. f`((\w\\. G(w))`x) < f`z" "y<\" for y z + proof - + note \y<\\ + also + note \\<\\ + finally + have "y<\" by simp + with \\x<\. f`((\w\\. G(w))`x) < f`z\ + have "f ` ((\w\\. G(w)) ` y) < f ` z" by simp + moreover from \y<\\ \y<\\ + have "(\w\\. G(w)) ` y = (\w\\. G(w)) ` y" + using beta_if by (auto dest:ltD) + ultimately show ?thesis by simp + qed + moreover + note \factor_body(\,\x\\. G(x),x)\ + ultimately + show ?thesis + unfolding factor_body_def by blast +qed + +lemma factor_body_simp[simp]: "factor_body(\,g,\)" + unfolding factor_body_def by simp + +lemma factor_rec_mono: + assumes + "\\\" "\<\" + shows + "factor_rec(\,\x\\. G(x)) \ factor_rec(\,\x\\. G(x))" + unfolding factor_rec_def + using assms ords factor_body_mono Least_antitone by simp + +text\We now define the factor as higher-order function. +Later it will be restricted to a set to obtain a bona fide function of +type @{typ i}.\ +definition + factor :: "i \ i" where + "factor(\) \ transrec(\,factor_rec)" + +lemma factor_unfold: + "factor(\) = factor_rec(\,\x\\. factor(x))" + using def_transrec[OF factor_def] . + +lemma factor_mono: + assumes "\\\" "\<\" "factor(\)\\" "factor(\)\\" + shows "factor(\) \ factor(\)" +proof - + have "factor(\) = factor_rec(\, \x\\. factor(x))" + using factor_unfold . + also from assms and factor_rec_mono + have "... \ factor_rec(\, \x\\. factor(x))" + by simp + also + have "factor_rec(\, \x\\. factor(x)) = factor(\)" + using def_transrec[OF factor_def, symmetric] . + finally show ?thesis . +qed + +text\The factor satisfies the predicate body of the minimization.\ + +lemma factor_body_factor: + "factor_body(\,\x\\. factor(x),factor(\))" + using ords factor_unfold[of \] + LeastI[of "factor_body(_,_)" \] + unfolding factor_rec_def by simp + +lemma factor_type [TC]: "Ord(factor(\))" + using ords factor_unfold[of \] + unfolding factor_rec_def by simp + +text\The value \<^term>\\\ in \<^term>\factor_body\ (and therefore, in +\<^term>\factor\) is meant to be a “default value”. Whenever it is not +attained, the factor function behaves as expected: It is increasing +and its composition with \<^term>\f\ also is.\ + +lemma f_factor_increasing: + assumes "\\\" "\<\" "factor(\)\\" + shows "f`factor(\) < f`factor(\)" +proof - + from assms + have "f ` ((\x\\. factor(x)) ` \) < f ` factor(\)" + using factor_unfold[of \] ords LeastI[of "factor_body(\,\x\\. factor(x))"] + unfolding factor_rec_def factor_body_def + by (auto simp del:beta_if) + with \\<\\ + show ?thesis using ltD by auto +qed + +lemma factor_increasing: + assumes "\\\" "\<\" "factor(\)\\" "factor(\)\\" + shows "factor(\))" + using assms f_factor_increasing factor_mono by (force intro:le_neq_imp_lt) + +lemma factor_in_delta: + assumes "factor(\) \ \" + shows "factor(\) \ \" + using assms factor_body_factor ords + unfolding factor_body_def by auto + +text\Finally, we define the (set) factor function as the restriction of +factor to the ordinal \<^term>\\\.\ + +definition + fun_factor :: "i" where + "fun_factor \ \\\\. factor(\)" + +lemma fun_factor_is_mono_map: + assumes "\\. \ \ \ \ factor(\) \ \" + shows "fun_factor \ mono_map(\, Memrel(\), \, Memrel(\))" + unfolding mono_map_def +proof (intro CollectI ballI impI) + (* Proof that \<^term>\fun_factor\ respects membership *) + fix \ \ + assume "\\\" "\\\" + moreover + note assms + moreover from calculation + have "factor(\)\\" "factor(\)\\" "Ord(\)" + using factor_in_delta Ord_in_Ord ords by auto + moreover + assume "\\, \\ \ Memrel(\)" + ultimately + show "\fun_factor ` \, fun_factor ` \\ \ Memrel(\)" + unfolding fun_factor_def + using ltI factor_increasing[THEN ltD] factor_in_delta + by simp +next + (* Proof of type *) + from assms + show "fun_factor : \ \ \" + unfolding fun_factor_def + using ltI lam_type factor_in_delta by simp +qed + +lemma f_fun_factor_is_mono_map: + assumes "\\. \ \ \ \ factor(\) \ \" + shows "f O fun_factor \ mono_map(\, Memrel(\), \, Memrel(\))" + unfolding mono_map_def + using f_type +proof (intro CollectI ballI impI comp_fun[of _ _ \]) + from assms + show "fun_factor : \ \ \" + using fun_factor_is_mono_map mono_map_is_fun by simp + (* Proof that f O ?g respects membership *) + fix \ \ + assume "\\, \\ \ Memrel(\)" + then + have "\<\" + using Ord_in_Ord[of "\"] ltI ords by blast + assume "\\\" "\\\" + moreover from this and assms + have "factor(\)\\" "factor(\)\\" by auto + moreover + have "Ord(\)" "\\0" using ords Limit_is_Ord by auto + moreover + note \\<\\ \fun_factor : \ \ \\ + ultimately + show "\(f O fun_factor) ` \, (f O fun_factor) ` \\ \ Memrel(\)" + using ltD[of "f ` factor(\)" "f ` factor(\)"] + f_factor_increasing apply_in_range f_type + unfolding fun_factor_def by auto +qed + +end (* cofinal_factor *) + +text\We state next the factorization lemma.\ + +lemma cofinal_fun_factorization: + notes le_imp_subset [dest] lt_trans2 [trans] + assumes + "Ord(\)" "Limit(\)" "f: \ \ \" "cf_fun(f,\)" + shows + "\g \ cf(\) \\<^sub>< \. f O g : cf(\) \\<^sub>< \ \ + cofinal_fun(f O g,\,Memrel(\))" +proof - + from \Limit(\)\ + have "Ord(\)" using Limit_is_Ord by simp + then + obtain j where "j :cf(\) \\<^sub>< \" "cf_fun(j,\)" + using cofinal_mono_map_cf by blast + then + have "domain(j) = cf(\)" + using domain_of_fun mono_map_is_fun by force + from \j \ _\ assms + interpret cofinal_factor j \ "cf(\)" + by (unfold_locales) (simp_all) + text\The core of the argument is to show that the factor function + indeed maps into \<^term>\\\, therefore its values satisfy the first + disjunct of \<^term>\factor_body\. This holds in turn because no + restriction of the factor composed with \<^term>\f\ to a proper initial + segment of \<^term>\cf(\)\ can be cofinal in \<^term>\\\ by definition of + cofinality. Hence there must be a witness that satisfies the first + disjunct.\ + have factor_not_delta: "factor(\)\\" if "\ \ cf(\)" for \ + text\For this, we induct on \<^term>\\\ ranging over \<^term>\cf(\)\.\ + proof (induct \ rule:Ord_induct[OF _ Ord_cf[of \]]) + case 1 with that show ?case . + next + case (2 \) + then + have IH: "z\\ \ factor(z)\\" for z by simp + define h where "h \ \x\\. f`factor(x)" + from IH + have "z\\ \ factor(z) \ \" for z + using factor_in_delta by blast + with \f:\\\\ + have "h : \ \ \" unfolding h_def using apply_funtype lam_type by auto + then + have "h : \ \\<^sub>< \" + unfolding mono_map_def + proof (intro CollectI ballI impI) + fix x y + assume "x\\" "y\\" + moreover from this and IH + have "factor(y) \ \" by simp + moreover from calculation and \h \ \ \ \\ + have "h`x \ \" "h`y \ \" by simp_all + moreover from \\\cf(\)\ and \y\\\ + have "y \ cf(\)" + using Ord_trans Ord_cf by blast + moreover from this + have "Ord(y)" + using Ord_cf Ord_in_Ord by blast + moreover + assume "\x,y\ \ Memrel(\)" + moreover from calculation + have "xh ` x, h ` y\ \ Memrel(\)" + unfolding h_def using f_factor_increasing ltD by (auto) + qed + with \\\cf(\)\ \Ord(\)\ + have "ordertype(h``\,Memrel(\)) = \" (* Maybe should use range(h) *) + using mono_map_ordertype_image[of \] Ord_cf Ord_in_Ord by blast + also + note \\ \cf(\)\ + finally + have "ordertype(h``\,Memrel(\)) \ cf(\)" by simp + moreover from \h \ \ \ \\ + have "h``\ \ \" + using mono_map_is_fun Image_sub_codomain by blast + ultimately + have "\ cofinal(h``\,\,Memrel(\))" + using ordertype_in_cf_imp_not_cofinal by simp + then + obtain \_0 where "\_0\\" "\x\h `` \. \ \\_0, x\ \ Memrel(\) \ \_0 \ x" + unfolding cofinal_def by auto + with \Ord(\)\ \h``\ \ \\ + have "\x\h `` \. x \ \_0" + using well_ord_Memrel[of \] well_ord_is_linear[of \ "Memrel(\)"] + unfolding linear_def by blast + from \\_0 \ \\ \j \ mono_map(_,_,\,_)\ \Ord(\)\ + have "j`\ \ \" + using mono_map_is_fun apply_in_range by force + with \\_0 \ \\ \Ord(\)\ + have "\_0 \ j`\ \ \" + using Un_least_mem_iff Ord_in_Ord by auto + with \cf_fun(f,\)\ + obtain \ where "\\domain(f)" "\\_0 \ j`\, f ` \\ \ Memrel(\) \ \_0 \ j`\ = f ` \" + by (auto simp add:cofinal_fun_def) blast + moreover from this and \f:\\\\ + have "\ \ \" using domain_of_fun by auto + moreover + note \Ord(\)\ + moreover from this and \f:\\\\ \\_0 \ \\ + have "Ord(f`\)" + using apply_in_range Ord_in_Ord by blast + moreover from calculation and \\_0 \ \\ and \Ord(\)\ and \j`\ \ \\ + have "Ord(\_0)" "Ord(j`\)" "Ord(\)" + using Ord_in_Ord by auto + moreover from \\x\h `` \. x \ \_0\ \Ord(\_0)\ \h:\\\\ + have "x\\ \ h`x < \_0" for x + using fun_is_function[of h \ "\_. \"] + Image_subset_Ord_imp_lt domain_of_fun[of h \ "\_. \"] + by blast + moreover + have "x\\ \ h`x < f`\" for x + proof - + fix x + assume "x\\" + with \\x\h `` \. x \ \_0\ \Ord(\_0)\ \h:\\\\ + have "h`x < \_0" + using fun_is_function[of h \ "\_. \"] + Image_subset_Ord_imp_lt domain_of_fun[of h \ "\_. \"] + by blast + also from \\\_0 \ _, f ` \\ \ Memrel(\) \ \_0 \ _= f ` \\ + \Ord(f`\)\ \Ord(\_0)\ \Ord(j`\)\ + have "\_0 \ f`\" + using Un_leD1[OF leI [OF ltI]] Un_leD1[OF le_eqI] by blast + finally + show "h`x < f`\" . + qed + ultimately + have "factor_body(\,\x\\. factor(x),\)" + unfolding h_def factor_body_def using ltD + by (auto dest:Un_memD2 Un_leD2[OF le_eqI]) + with \Ord(\)\ + have "factor(\) \ \" + using factor_unfold[of \] Least_le unfolding factor_rec_def by auto + with \\\\\ \Ord(\)\ + have "factor(\) \ \" + using leI[of \] ltI[of \] by (auto dest:ltD) + then + show ?case by (auto elim:mem_irrefl) + qed + moreover + have "cofinal_fun(f O fun_factor, \, Memrel(\))" + proof (intro cofinal_funI) + fix a + assume "a \ \" + with \cf_fun(j,\)\ \domain(j) = cf(\)\ + obtain x where "x\cf(\)" "a \ j`x \ a = j`x" + by (auto simp add:cofinal_fun_def) blast + with factor_not_delta + have "x \ domain(f O fun_factor)" + using f_fun_factor_is_mono_map mono_map_is_fun domain_of_fun by force + moreover + have "a \ (f O fun_factor) `x \ a = (f O fun_factor) `x" + proof - + from \x\cf(\)\ factor_not_delta + have "j ` x \ f ` factor(x)" + using mem_not_refl factor_body_factor factor_in_delta + unfolding factor_body_def by auto + with \a \ j`x \ a = j`x\ + have "a \ f ` factor(x) \ a = f ` factor(x)" + using ltD by blast + with \x\cf(\)\ + show ?thesis using lam_funtype[of "cf(\)" factor] + unfolding fun_factor_def by auto + qed + moreover + note \a \ \\ + moreover from calculation and \Ord(\)\ and factor_not_delta + have "(f O fun_factor) `x \ \" + using Limit_nonzero apply_in_range mono_map_is_fun[of "f O fun_factor"] + f_fun_factor_is_mono_map by blast + ultimately + show "\x \ domain(f O fun_factor). \a, (f O fun_factor) ` x\ \ Memrel(\) + \ a = (f O fun_factor) `x" + by blast + qed + ultimately + show ?thesis + using fun_factor_is_mono_map f_fun_factor_is_mono_map by blast +qed + +text\As a final observation in this part, we note that if the original +cofinal map was increasing, then the factor function is also cofinal.\ +lemma factor_is_cofinal: + assumes + "Ord(\)" "Ord(\)" + "f :\ \\<^sub>< \" "f O g \ mono_map(\,r,\,Memrel(\))" + "cofinal_fun(f O g,\,Memrel(\))" "g: \ \ \" + shows + "cf_fun(g,\)" + unfolding cf_fun_def cofinal_fun_def +proof + fix a + assume "a \ \" + with \f \ mono_map(\,_,\,_)\ + have "f`a \ \" + using mono_map_is_fun by force + with \cofinal_fun(f O g,\,_)\ + obtain y where "y\\" "\f`a, (f O g) ` y\ \ Memrel(\) \ f`a = (f O g) ` y" + unfolding cofinal_fun_def using domain_of_fun[OF \g:\ \ \\] by blast + with \g:\ \ \\ + have "\f`a, f ` (g ` y)\ \ Memrel(\) \ f`a = f ` (g ` y)" "g`y \ \" + using comp_fun_apply[of g \ \ y f] by auto + with assms(1-3) and \a\\\ + have "\a, g ` y\ \ Memrel(\) \ a = g ` y" + using Memrel_mono_map_reflects Memrel_mono_map_is_inj[of \ f \ \] + inj_apply_equality[of f \ \] by blast + with \y\\\ + show "\x\domain(g). \a, g ` x\ \ Memrel(\) \ a = g ` x" + using domain_of_fun[OF \g:\ \ \\] by blast +qed + + +subsection\Classical results on cofinalities\ + +text\Now the rest of the results follow in a more algebraic way. The +next proof one invokes a case analysis on whether the argument is zero, +a successor ordinal or a limit one; the last case being the most +relevant one and is immediate from the factorization lemma.\ + +lemma cf_le_domain_cofinal_fun: + assumes + "Ord(\)" "Ord(\)" "f:\ \ \" "cf_fun(f,\)" + shows + "cf(\)\\" + using assms +proof (cases rule:Ord_cases) + case 0 + with \Ord(\)\ + show ?thesis using Ord_0_le by simp +next + case (succ \) + with assms + obtain x where "x\\" "f`x=\" using cf_fun_succ' by blast + then + have "\\0" by blast + let ?f="{\0,f`x\}" + from \f`x=\\ + have "?f:1\succ(\)" + using singleton_0 singleton_fun[of 0 \] singleton_subsetI fun_weaken_type by simp + with \Ord(\)\ \f`x=\\ + have "cf(succ(\)) = 1" using cf_succ by simp + with \\\0\ succ + show ?thesis using Ord_0_lt_iff succ_leI \Ord(\)\ by simp +next + case (limit) + with assms + obtain g where "g :cf(\) \\<^sub>< \" + using cofinal_fun_factorization by blast + with assms + show ?thesis using mono_map_imp_le by simp +qed + +lemma cf_ordertype_cofinal: + assumes + "Limit(\)" "A\\" "cofinal(A,\,Memrel(\))" + shows + "cf(\) = cf(ordertype(A,Memrel(\)))" +proof (intro le_anti_sym) + from \Limit(\)\ + have "Ord(\)" + using Limit_is_Ord by simp + with \A \ \\ + have "well_ord(A,Memrel(\))" + using well_ord_Memrel well_ord_subset by blast + then + obtain f \ where "f:\\, Memrel(\)\ \ \A,Memrel(\)\" "Ord(\)" "\ = ordertype(A,Memrel(\))" + using ordertype_ord_iso Ord_ordertype ord_iso_sym by blast + moreover from this + have "f: \ \ A" + using ord_iso_is_mono_map mono_map_is_fun[of f _ "Memrel(\)"] by blast + moreover from this + have "function(f)" + using fun_is_function by simp + moreover from \f:\\, Memrel(\)\ \ \A,Memrel(\)\\ + have "range(f) = A" + using ord_iso_is_bij bij_is_surj surj_range by blast + moreover note \cofinal(A,\,_)\ + ultimately + have "cf_fun(f,\)" + using cofinal_range_iff_cofinal_fun by blast + moreover from \Ord(\)\ + obtain h where "h :cf(\) \\<^sub>< \" "cf_fun(h,\)" + using cofinal_mono_map_cf by blast + moreover from \Ord(\)\ + have "trans(Memrel(\))" + using trans_Memrel by simp + moreover + note \A\\\ + ultimately + have "cofinal_fun(f O h,\,Memrel(\))" + using cofinal_comp ord_iso_is_mono_map[OF \f:\\,_\ \ \A,_\\] mono_map_is_fun + mono_map_mono by blast + moreover from \f:\\A\ \A\\\ \h\mono_map(cf(\),_,\,_)\ + have "f O h : cf(\) \ \" + using Pi_mono[of A \] comp_fun mono_map_is_fun by blast + moreover + note \Ord(\)\ \Ord(\)\ \\ = ordertype(A,Memrel(\))\ + ultimately + show "cf(\) \ cf(ordertype(A,Memrel(\)))" + using cf_le_domain_cofinal_fun[of _ _ "f O h"] + by (auto simp add:cf_fun_def) + (********************************************************) + from \f:\\, _\ \ \A,_\\ \A\\\ + have "f :\ \\<^sub>< \" + using mono_map_mono[OF ord_iso_is_mono_map] by simp + then + have "f: \ \ \" + using mono_map_is_fun by simp + with \cf_fun(f,\)\ \Limit(\)\ \Ord(\)\ + obtain g where "g :cf(\) \\<^sub>< \" + "f O g :cf(\) \\<^sub>< \" + "cofinal_fun(f O g,\,Memrel(\))" + using cofinal_fun_factorization by blast + moreover from this + have "g:cf(\)\\" + using mono_map_is_fun by simp + moreover + note \Ord(\)\ + moreover from calculation and \f :\ \\<^sub>< \\ \Ord(\)\ + have "cf_fun(g,\)" + using factor_is_cofinal by blast + moreover + note \\ = ordertype(A,Memrel(\))\ + ultimately + show "cf(ordertype(A,Memrel(\))) \ cf(\)" + using cf_le_domain_cofinal_fun[OF _ Ord_cf mono_map_is_fun] by simp +qed + +lemma cf_idemp: + assumes "Limit(\)" + shows "cf(\) = cf(cf(\))" +proof - + from assms + obtain A where "A\\" "cofinal(A,\,Memrel(\))" "cf(\) = ordertype(A,Memrel(\))" + using Limit_is_Ord cf_is_ordertype by blast + with assms + have "cf(\) = cf(ordertype(A,Memrel(\)))" using cf_ordertype_cofinal by simp + also + have "... = cf(cf(\))" + using \cf(\) = ordertype(A,Memrel(\))\ by simp + finally + show "cf(\) = cf(cf(\))" . +qed + +lemma cf_le_cardinal: + assumes "Limit(\)" + shows "cf(\) \ |\|" +proof - + from assms + have \Ord(\)\ using Limit_is_Ord by simp + then + obtain f where "f \ surj(|\|,\)" + using Ord_cardinal_eqpoll unfolding eqpoll_def bij_def by blast + with \Ord(\)\ + show ?thesis + using Card_is_Ord[OF Card_cardinal] surj_is_cofinal + cf_le_domain_cofinal_fun[of \] surj_is_fun by blast +qed + +lemma regular_is_Card: + notes le_imp_subset [dest] + assumes "Limit(\)" "\ = cf(\)" + shows "Card(\)" +proof - + from assms + have "|\| \ \" + using Limit_is_Ord Ord_cardinal_le by blast + also from \\ = cf(\)\ + have "\ \ cf(\)" by simp + finally + have "|\| \ cf(\)" . + with assms + show ?thesis unfolding Card_def using cf_le_cardinal by force +qed + +lemma Limit_cf: assumes "Limit(\)" shows "Limit(cf(\))" + using Ord_cf[of \, THEN Ord_cases] + \ \\<^term>\cf(\)\ being 0 or successor leads to contradiction\ +proof (cases) + case 1 + with \Limit(\)\ + show ?thesis using cf_zero_iff Limit_is_Ord by simp +next + case (2 \) + moreover + note \Limit(\)\ + moreover from calculation + have "cf(\) = 1" + using cf_idemp cf_succ by fastforce + ultimately + show ?thesis + using succ_LimitE cf_eq_one_iff Limit_is_Ord + by auto +qed + +lemma InfCard_cf: "Limit(\) \ InfCard(cf(\))" + using regular_is_Card cf_idemp Limit_cf nat_le_Limit Limit_cf + unfolding InfCard_def by simp + +lemma cf_le_cf_fun: + notes [dest] = Limit_is_Ord + assumes "cf(\) \ \" "Limit(\)" + shows "\f. f:\ \ \ \ cf_fun(f, \)" +proof - + note assms + moreover from this + obtain h where h_cofinal_mono: "cf_fun(h,\)" + "h :cf(\) \\<^sub>< \" + "h : cf(\) \ \" + using cofinal_mono_map_cf mono_map_is_fun by force + moreover from calculation + obtain g where "g \ inj(cf(\), \)" + using le_imp_lepoll by blast + from this and calculation(2,3,5) + obtain f where "f \ surj(\, cf(\))" "f: \ \ cf(\)" + using inj_imp_surj[OF _ Limit_has_0[THEN ltD]] + surj_is_fun Limit_cf by blast + moreover from this + have "cf_fun(f,cf(\))" + using surj_is_cofinal by simp + moreover + note h_cofinal_mono \Limit(\)\ + moreover from calculation + have "cf_fun(h O f,\)" + using cf_fun_comp by blast + moreover from calculation + have "h O f \ \ -> \" + using comp_fun by simp + ultimately + show ?thesis by blast +qed + +lemma Limit_cofinal_fun_lt: + notes [dest] = Limit_is_Ord + assumes "Limit(\)" "f: \ \ \" "cf_fun(f,\)" "n\\" + shows "\\\\. n < f`\" +proof - + from \Limit(\)\ \n\\\ + have "succ(n) \ \" + using Limit_has_succ[OF _ ltI, THEN ltD] by auto + moreover + note \f: \ \ _\ + moreover from this + have "domain(f) = \" + using domain_of_fun by simp + moreover + note \cf_fun(f,\)\ + ultimately + obtain \ where "\ \ \" "succ(n) \ f`\ \ succ(n) = f `\" + using cf_funD[THEN cofinal_funD] by blast + moreover from this + consider (1) "succ(n) \ f`\" | (2) "succ(n) = f `\" + by blast + then + have "n < f`\" + proof (cases) + case 1 + moreover + have "n \ succ(n)" by simp + moreover + note \Limit(\)\ \f: \ \ _\ \\ \ \\ + moreover from this + have "Ord(f ` \)" + using apply_type[of f \ "\_. \", THEN [2] Ord_in_Ord] + by blast + ultimately + show ?thesis + using Ord_trans[of n "succ(n)" "f ` \"] ltI by blast + next + case 2 + have "n \ f ` \" by (simp add:2[symmetric]) + with \Limit(\)\ \f: \ \ _\ \\ \ \\ + show ?thesis + using ltI + apply_type[of f \ "\_. \", THEN [2] Ord_in_Ord] + by blast + qed + ultimately + show ?thesis by blast +qed + +context + includes Ord_dests Aleph_dests Aleph_intros Aleph_mem_dests mono_map_rules +begin + +text\We end this section by calculating the cofinality of Alephs, for +the zero and limit case. The successor case depends on $\AC$.\ + +lemma cf_nat: "cf(\) = \" + using Limit_nat[THEN InfCard_cf] cf_le_cardinal[of \] + Card_nat[THEN Card_cardinal_eq] le_anti_sym + unfolding InfCard_def by auto + +lemma cf_Aleph_zero: "cf(\\<^bsub>0\<^esub>) = \\<^bsub>0\<^esub>" + using cf_nat unfolding Aleph_def by simp + +lemma cf_Aleph_Limit: + assumes "Limit(\)" + shows "cf(\\<^bsub>\\<^esub>) = cf(\)" +proof - + note \Limit(\)\ + moreover from this + have "(\x\\. \\<^bsub>x\<^esub>) : \ \ \\<^bsub>\\<^esub>" (is "?f : _ \ _") + using lam_funtype[of _ Aleph] fun_weaken_type[of _ _ _ "\\<^bsub>\\<^esub>"] by blast + moreover from \Limit(\)\ + have "x \ y \ \\<^bsub>x\<^esub> \ \\<^bsub>y\<^esub>" if "x \ \" "y \ \" for x y + using that Ord_in_Ord[of \] Ord_trans[of _ _ \] by blast + ultimately + have "?f \ mono_map(\,Memrel(\),\\<^bsub>\\<^esub>, Memrel(\\<^bsub>\\<^esub>))" + by auto + with \Limit(\)\ + have "?f \ \\, Memrel(\)\ \ \?f``\, Memrel(\\<^bsub>\\<^esub>)\" + using mono_map_imp_ord_iso_Memrel[of \ "\\<^bsub>\\<^esub>" ?f] + Card_Aleph (* Already an intro rule, but need it explicitly *) + by blast + then + have "converse(?f) \ \?f``\, Memrel(\\<^bsub>\\<^esub>)\ \ \\, Memrel(\)\" + using ord_iso_sym by simp + with \Limit(\)\ + have "ordertype(?f``\, Memrel(\\<^bsub>\\<^esub>)) = \" + using ordertype_eq[OF _ well_ord_Memrel] + ordertype_Memrel by auto + moreover from \Limit(\)\ + have "cofinal(?f``\, \\<^bsub>\\<^esub>, Memrel(\\<^bsub>\\<^esub>))" + unfolding cofinal_def + proof (standard, intro ballI) + fix a + assume "a\\\<^bsub>\\<^esub>" "\\<^bsub>\\<^esub> = (\i<\. \\<^bsub>i\<^esub>)" + moreover from this + obtain i where "i<\" "a\\\<^bsub>i\<^esub>" + by auto + moreover from this and \Limit(\)\ + have "Ord(i)" using ltD Ord_in_Ord by blast + moreover from \Limit(\)\ and calculation + have "succ(i) \ \" using ltD by auto + moreover from this and \Ord(i)\ + have "\\<^bsub>i\<^esub> < \\<^bsub>succ(i)\<^esub>" + by (auto) + ultimately + have "\a,\\<^bsub>i\<^esub>\ \ Memrel(\\<^bsub>\\<^esub>)" + using ltD by (auto dest:Aleph_increasing) + moreover from \i<\\ + have "\\<^bsub>i\<^esub> \ ?f``\" + using ltD apply_in_image[OF \?f : _ \ _\] by auto + ultimately + show "\x\?f `` \. \a, x\ \ Memrel(\\<^bsub>\\<^esub>) \ a = x" by blast + qed + moreover + note \?f: \ \ \\<^bsub>\\<^esub>\ \Limit(\)\ + ultimately + show "cf(\\<^bsub>\\<^esub>) = cf(\)" + using cf_ordertype_cofinal[OF Limit_Aleph Image_sub_codomain, of \ ?f \ \ ] + Limit_is_Ord by simp +qed + +end (* includes *) + +end \ No newline at end of file diff --git a/thys/Delta_System_Lemma/Cohen_Posets.thy b/thys/Delta_System_Lemma/Cohen_Posets.thy new file mode 100644 --- /dev/null +++ b/thys/Delta_System_Lemma/Cohen_Posets.thy @@ -0,0 +1,248 @@ +subsection\Application to Cohen posets\label{sec:cohen}\ + +theory Cohen_Posets + imports + Delta_System + +begin + +text\We end this session by applying DSL to the combinatorics of +finite function posets. We first define some basic concepts; we take +a different approach from \cite{2020arXiv200109715G}, in that the +order relation is presented as a predicate (of type @{typ \[i,i] \ o\}). + +Two elements of a poset are \<^emph>\compatible\ if they have a common lower +bound.\ + +definition compat_in :: "[i,[i,i]\o,i,i]\o" where + "compat_in(A,r,p,q) \ \d\A . r(d,p) \ r(d,q)" + +text\An \<^emph>\antichain\ is a subset of pairwise incompatible members.\ + +definition + antichain :: "[i,[i,i]\o,i]\o" where + "antichain(P,leq,A) \ A\P \ (\p\A. \q\A. + p\q \ \compat_in(P,leq,p,q))" + +text\A poset has the \<^emph>\countable chain condition\ (ccc) if all of its +antichains are countable.\ + +definition + ccc :: "[i,[i,i]\o]\o" where + "ccc(P,leq) \ \A. antichain(P,leq,A) \ countable(A)" + +text\Finally, the \<^emph>\Cohen poset\ is the set of finite partial functions +between two sets with the order of reverse inclusion.\ + +definition + Fn :: "[i,i] \ i" where + "Fn(I,J) \ \{(d\J) . d \ {x \ Pow(I). Finite(x)}}" + +abbreviation + Supset :: "i \ i \ o" (infixl \\\ 50) where + "f \ g \ g \ f" + +lemma FnI[intro]: + assumes "p : d \ J" "d \ I" "Finite(d)" + shows "p \ Fn(I,J)" + using assms unfolding Fn_def by auto + +lemma FnD[dest]: + assumes "p \ Fn(I,J)" + shows "\d. p : d \ J \ d \ I \ Finite(d)" + using assms unfolding Fn_def by auto + +lemma Fn_is_function: "p \ Fn(I,J) \ function(p)" + unfolding Fn_def using fun_is_function by auto + +lemma restrict_eq_imp_compat: + assumes "f \ Fn(I, J)" "g \ Fn(I, J)" + "restrict(f, domain(f) \ domain(g)) = restrict(g, domain(f) \ domain(g))" + shows "f \ g \ Fn(I, J)" +proof - + from assms + obtain d1 d2 where "f : d1 \ J" "d1 \ Pow(I)" "Finite(d1)" + "g : d2 \ J" "d2 \ Pow(I)" "Finite(d2)" + by blast + with assms + show ?thesis + using domain_of_fun + restrict_eq_imp_Un_into_Pi[of f d1 "\_. J" g d2 "\_. J"] + by auto +qed + +text\We finally arrive to our application of DSL.\ + +lemma ccc_Fn_nat: "ccc(Fn(I,2), (\))" +proof - + { + fix A + assume "\ countable(A)" + assume "A \ Fn(I, 2)" + moreover from this + have "countable({p\A. domain(p) = d})" for d + proof (cases "Finite(d) \ d \ I") + case True + with \A \ Fn(I, 2)\ + have "{p \ A . domain(p) = d} \ d \ 2" + using domain_of_fun by fastforce + moreover from True + have "Finite(d \ 2)" + using Finite_Pi lesspoll_nat_is_Finite by auto + ultimately + show ?thesis using subset_Finite[of _ "d\2" ] Finite_imp_countable + by auto + next + case False + with \A \ Fn(I, 2)\ + have "{p \ A . domain(p) = d} = 0" + by (intro equalityI) (auto dest!: domain_of_fun) + then + show ?thesis using empty_lepollI by auto + qed + moreover + have "uncountable({domain(p) . p \ A})" + proof + from \A \ Fn(I, 2)\ + have "A = (\d\{domain(p) . p \ A}. {p\A. domain(p) = d})" + by auto + moreover + assume "countable({domain(p) . p \ A})" + moreover + note \\d. countable({p\A. domain(p) = d})\ \\countable(A)\ + ultimately + show "False" + using countable_imp_countable_UN[of "{domain(p). p\A}" + "\d. {p \ A. domain(p) = d }"] + by auto + qed + moreover from \A \ Fn(I, 2)\ + have "p \ A \ Finite(domain(p))" for p + using lesspoll_nat_is_Finite[of "domain(p)"] + domain_of_fun[of p _ "\_. 2"] by auto + ultimately + obtain D where "delta_system(D)" "D \ {domain(p) . p \ A}" "D \ \\<^bsub>1\<^esub>" + using delta_system_uncountable[of "{domain(p) . p \ A}"] by auto + then + have delta:"\d1\D. \d2\D. d1 \ d2 \ d1 \ d2 = \D" + using delta_system_root_eq_Inter + by simp + moreover from \D \ \\<^bsub>1\<^esub>\ + have "uncountable(D)" + using uncountable_iff_subset_eqpoll_Aleph1 by auto + moreover from this and \D \ {domain(p) . p \ A}\ + obtain p1 where "p1 \ A" "domain(p1) \ D" + using uncountable_not_empty[of D] by blast + moreover from this and \p1 \ A \ Finite(domain(p1))\ + have "Finite(domain(p1))" using Finite_domain by simp + moreover + define r where "r \ \D" + ultimately + have "Finite(r)" using subset_Finite[of "r" "domain(p1)"] by auto + have "countable({restrict(p,r) . p\A})" + proof - + have "f \ Fn(I, 2) \ restrict(f,r) \ Pow(r \ 2)" for f + using restrict_subset_Sigma[of f _ "\_. 2" r] + by (auto dest!:FnD simp: Pi_def) auto + with \A \ Fn(I, 2)\ + have "{restrict(f,r) . f \ A } \ Pow(r \ 2)" + by fast + with \Finite(r)\ + show ?thesis + using Finite_Sigma[THEN Finite_Pow, of r "\_. 2"] + by (intro Finite_imp_countable) (auto intro:subset_Finite) + qed + moreover + have "uncountable({p\A. domain(p) \ D})" (is "uncountable(?X)") + proof + from \D \ {domain(p) . p \ A}\ + have "(\p\?X. domain(p)) \ surj(?X, D)" + using lam_type unfolding surj_def by auto + moreover + assume "countable(?X)" + moreover + note \uncountable(D)\ + ultimately + show False + using surj_countable by auto + qed + moreover + have "D = (\f\Pow(r\2) . {domain(p) . p\{ x\A. restrict(x,r) = f \ domain(x) \ D}})" + proof - + { + fix z + assume "z \ D" + with \D \ _\ + obtain p where "domain(p) = z" "p \ A" + by auto + moreover from \A \ Fn(I, 2)\ and this + have "p : z \ 2" + using domain_of_fun by (auto dest!:FnD) + moreover from this + have "restrict(p,r) \ r \ 2" + using function_restrictI[of p r] fun_is_function[of p z "\_. 2"] + restrict_subset_Sigma[of p z "\_. 2" r] + by (auto simp:Pi_def) + ultimately + have "\p\A. restrict(p,r) \ Pow(r\2) \ domain(p) = z" by auto + } + then + show ?thesis + by (intro equalityI) (force)+ + qed + obtain f where "uncountable({domain(p) . p\{x\A. restrict(x,r) = f \ domain(x) \ D}})" + (is "uncountable(?Y(f))") + proof - + { + from \Finite(r)\ + have "countable(Pow(r\2))" + using Finite_Sigma[THEN Finite_Pow, THEN Finite_imp_countable] + by simp + moreover + assume "countable(?Y(f))" for f + moreover + note \D = (\f\Pow(r\2) .?Y(f))\ + moreover + note \uncountable(D)\ + ultimately + have "False" + using countable_imp_countable_UN[of "Pow(r\2)" ?Y] by auto + } + with that + show ?thesis by auto + qed + then + obtain j where "j \ inj(nat, ?Y(f))" + using uncountable_iff_nat_lt_cardinal[THEN iffD1, THEN leI, + THEN cardinal_le_imp_lepoll, THEN lepollD] + by auto + then + have "j`0 \ j`1" "j`0 \ ?Y(f)" "j`1 \ ?Y(f)" + using inj_is_fun[THEN apply_type, of j nat "?Y(f)"] + unfolding inj_def by auto + then + obtain p q where "domain(p) \ domain(q)" "p \ A" "q \ A" + "domain(p) \ D" "domain(q) \ D" + "restrict(p,r) = restrict(q,r)" by auto + moreover from this and delta + have "domain(p) \ domain(q) = r" unfolding r_def by simp + moreover + note \A \ Fn(I, 2)\ + moreover from calculation + have "p \ q \ Fn(I, 2)" + by (rule_tac restrict_eq_imp_compat) auto + ultimately + have "\p\A. \q\A. p \ q \ compat_in(Fn(I, 2), (\), p, q)" + unfolding compat_in_def + by (rule_tac bexI[of _ p], rule_tac bexI[of _ q]) blast + } + then + show ?thesis unfolding ccc_def antichain_def by auto +qed + +text\The fact that a poset $P$ has the ccc has useful consequences for the +theory of forcing, since it implies that cardinals from the original +model are exactly the cardinals in any generic extension by $P$ +\cite[Chap.~IV]{kunen2011set}.\ + +end \ No newline at end of file diff --git a/thys/Delta_System_Lemma/Delta_System.thy b/thys/Delta_System_Lemma/Delta_System.thy new file mode 100644 --- /dev/null +++ b/thys/Delta_System_Lemma/Delta_System.thy @@ -0,0 +1,274 @@ +section\The Delta System Lemma\label{sec:dsl}\ + +theory Delta_System + imports + Cardinal_Library + +begin + +text\A \<^emph>\delta system\ is family of sets with a common pairwise +intersection.\ + +definition + delta_system :: "i \ o" where + "delta_system(D) \ \r. \A\D. \B\D. A \ B \ A \ B = r" + +lemma delta_systemI[intro]: + assumes "\A\D. \B\D. A \ B \ A \ B = r" + shows "delta_system(D)" + using assms unfolding delta_system_def by simp + +lemma delta_systemD[dest]: + "delta_system(D) \ \r. \A\D. \B\D. A \ B \ A \ B = r" + unfolding delta_system_def by simp + +text\Hence, pairwise intersections equal the intersection of the whole +family.\ + +lemma delta_system_root_eq_Inter: + assumes "delta_system(D)" + shows "\A\D. \B\D. A \ B \ A \ B = \D" +proof (clarify, intro equalityI, auto) + fix A' B' x C + assume hyp:"A'\D" "B'\ D" "A'\B'" "x\A'" "x\B'" "C\D" + with assms + obtain r where delta:"\A\D. \B\D. A \ B \ A \ B = r" + by auto + show "x \ C" + proof (cases "C=A'") + case True + with hyp and assms + show ?thesis by simp + next + case False + moreover + note hyp + moreover from calculation and delta + have "r = C \ A'" "A' \ B' = r" "x\r" by auto + ultimately + show ?thesis by simp + qed +qed + +text\The \<^emph>\Delta System Lemma\ (DSL) states that any uncountable family of +finite sets includes an uncountable delta system. This is the simplest +non trivial version; others, for cardinals greater than \<^term>\\\<^bsub>1\<^esub>\ assume +some weak versions of the generalized continuum hypothesis for the +cardinals involved. + +The proof is essentially the one in \cite[III.2.6]{kunen2011set} for the +case \<^term>\\\<^bsub>1\<^esub>\; another similar presentation can be found in +\cite[Chap.~16]{JW}.\ + +lemma delta_system_Aleph1: + assumes "\A\F. Finite(A)" "F \ \\<^bsub>1\<^esub>" + shows "\D. D \ F \ delta_system(D) \ D \ \\<^bsub>1\<^esub>" +proof - + text\Since all members are finite,\ + from \\A\F. Finite(A)\ + have "(\A\F. |A|) : F \ \" (is "?cards : _") + by (rule_tac lam_type) simp + moreover from this + have a:"?cards -`` {n} = { A\F . |A| = n }" for n + using vimage_lam by auto + moreover + note \F \ \\<^bsub>1\<^esub>\ + moreover from calculation + text\there are uncountably many have the same cardinal:\ + obtain n where "n\\" "|?cards -`` {n}| = \\<^bsub>1\<^esub>" + using eqpoll_Aleph1_cardinal_vimage[of F ?cards] by auto + moreover + define G where "G \ ?cards -`` {n}" + moreover from calculation + have "G \ F" by auto + ultimately + text\Therefore, without loss of generality, we can assume that all + elements of the family have cardinality \<^term>\n\\\.\ + have "A\G \ |A| = n" and "G \ \\<^bsub>1\<^esub>" for A + using cardinal_Card_eqpoll_iff by auto + with \n\\\ + text\So we prove the result by induction on this \<^term>\n\ and + generalizing \<^term>\G\, since the argument requires changing the + family in order to apply the inductive hypothesis.\ + have "\D. D \ G \ delta_system(D) \ D \ \\<^bsub>1\<^esub>" + proof (induct arbitrary:G) + case 0 \ \This case is impossible\ + then + have "G \ {0}" + using cardinal_0_iff_0 by auto + with \G \ \\<^bsub>1\<^esub>\ + show ?case + using nat_lt_Aleph1 subset_imp_le_cardinal[of G "{0}"] + lt_trans2 cardinal_Card_eqpoll_iff by auto + next + case (succ n) + then + have "\a\G. Finite(a)" + using Finite_cardinal_iff' nat_into_Finite[of "succ(n)"] + by fastforce + show "\D. D \ G \ delta_system(D) \ D \ \\<^bsub>1\<^esub>" + proof (cases "\p. {A\G . p \ A} \ \\<^bsub>1\<^esub>") + case True \ \the positive case, uncountably many sets with a + common element\ + then + obtain p where "{A\G . p \ A} \ \\<^bsub>1\<^esub>" by blast + moreover from this + have "{A-{p} . A\{X\G. p\X}} \ \\<^bsub>1\<^esub>" (is "?F \ _") + using Diff_bij[of "{A\G . p \ A}" "{p}"] + comp_bij[OF bij_converse_bij, where C="\\<^bsub>1\<^esub>"] by fast + text\Now using the hypothesis of the successor case,\ + moreover from \\A. A\G \ |A|=succ(n)\ \\a\G. Finite(a)\ + and this + have "p\A \ A\G \ |A - {p}| = n" for A + using Finite_imp_succ_cardinal_Diff[of _ p] by force + moreover from this and \n\\\ + have "\a\?F. Finite(a)" + using Finite_cardinal_iff' nat_into_Finite by auto + moreover + text\we may apply the inductive hypothesis to the new family \<^term>\?F\:\ + note \(\A. A \ ?F \ |A| = n) \ ?F \ \\<^bsub>1\<^esub> \ + \D. D \ ?F \ delta_system(D) \ D \ \\<^bsub>1\<^esub>\ + ultimately + obtain D where "D\{A-{p} . A\{X\G. p\X}}" "delta_system(D)" "D \ \\<^bsub>1\<^esub>" + by auto + moreover from this + obtain r where "\A\D. \B\D. A \ B \ A \ B = r" + by fastforce + then + have "\A\D.\B\D. A\{p} \ B\{p}\(A \ {p}) \ (B \ {p}) = r\{p}" + by blast + ultimately + have "delta_system({B \ {p} . B\D})" (is "delta_system(?D)") + by fastforce + moreover from \D \ \\<^bsub>1\<^esub>\ + have "|D| = \\<^bsub>1\<^esub>" "Infinite(D)" + using cardinal_eqpoll_iff + by (auto intro!: uncountable_iff_subset_eqpoll_Aleph1[THEN iffD2] + uncountable_imp_Infinite) force + moreover from this + have "?D \ \\<^bsub>1\<^esub>" + using cardinal_map_Un[of D "{p}"] naturals_lt_nat + cardinal_eqpoll_iff[THEN iffD1] by simp + moreover + note \D \ {A-{p} . A\{X\G. p\X}}\ + have "?D \ G" + proof - + { + fix A + assume "A\G" "p\A" + moreover from this + have "A = A - {p} \ {p}" + by blast + ultimately + have "A -{p} \ {p} \ G" + by auto + } + with \D \ {A-{p} . A\{X\G. p\X}}\ + show ?thesis + by blast + qed + ultimately + show "\D. D \ G \ delta_system(D) \ D \ \\<^bsub>1\<^esub>" by auto + next + case False + note \\ (\p. {A \ G . p \ A} \ \\<^bsub>1\<^esub>)\ \ \the other case\ + moreover from \G \ \\<^bsub>1\<^esub>\ + have "{A \ G . p \ A} \ \\<^bsub>1\<^esub>" (is "?G(p) \ _") for p + by (blast intro:lepoll_eq_trans[OF subset_imp_lepoll]) + ultimately + have "?G(p) \ \\<^bsub>1\<^esub>" for p + unfolding lesspoll_def by simp + then (* may omit the previous step if unfolding here: *) + have "?G(p) \ \" for p + using lesspoll_aleph_plus_one[of 0] Aleph_zero_eq_nat by auto + moreover + have "{A \ G . S \ A \ 0} = (\p\S. ?G(p))" for S + by auto + ultimately + have "countable(S) \ countable({A \ G . S \ A \ 0})" for S + using InfCard_nat Card_nat + le_Card_iff[THEN iffD2, THEN [3] leqpoll_imp_cardinal_UN_le, + THEN [2] le_Card_iff[THEN iffD1], of \ S] + unfolding countable_def by simp + text\For every countable subfamily of \<^term>\G\ there is another some + element disjoint from all of them:\ + have "\A\G. \S\X. S \ A = 0" if "|X| < \\<^bsub>1\<^esub>" "X \ G" for X + proof - + from \n\\\ \\A. A\G \ |A| = succ(n)\ + have "A\G \ Finite(A)" for A + using cardinal_Card_eqpoll_iff + unfolding Finite_def by fastforce + with \X\G\ + have "A\X \ countable(A)" for A + using Finite_imp_countable by auto + with \|X| < \\<^bsub>1\<^esub>\ + have "countable(\X)" + using Card_nat[THEN cardinal_lt_csucc_iff, of X] + countable_union_countable countable_iff_cardinal_le_nat + unfolding Aleph_def by simp + with \countable(_) \ countable({A \ G . _ \ A \ 0})\ + have "countable({A \ G . (\X) \ A \ 0})" . + with \G \ \\<^bsub>1\<^esub>\ + obtain B where "B\G" "B \ {A \ G . (\X) \ A \ 0}" + using nat_lt_Aleph1 cardinal_Card_eqpoll_iff[of "\\<^bsub>1\<^esub>" G] + uncountable_not_subset_countable[of "{A \ G . (\X) \ A \ 0}" G] + uncountable_iff_nat_lt_cardinal + by auto + then + show "\A\G. \S\X. S \ A = 0" by auto + qed + moreover from \G \ \\<^bsub>1\<^esub>\ + obtain b where "b\G" + using uncountable_iff_subset_eqpoll_Aleph1 + uncountable_not_empty by blast + ultimately + text\Hence, the hypotheses to perform a bounded-cardinal selection + are satisfied,\ + obtain S where "S:\\<^bsub>1\<^esub>\G" "\\\\<^bsub>1\<^esub> \ \\\\<^bsub>1\<^esub> \ \<\ \ S`\ \ S`\ = 0" + for \ \ + using bounded_cardinal_selection[of "\\<^bsub>1\<^esub>" G "\s a. s \ a = 0" b] + by force + then + have "\ \ \\<^bsub>1\<^esub> \ \ \ \\<^bsub>1\<^esub> \ \\\ \ S`\ \ S`\ = 0" for \ \ + using lt_neq_symmetry[of "\\<^bsub>1\<^esub>" "\\ \. S`\ \ S`\ = 0"] Card_is_Ord + by auto blast + text\and a symmetry argument shows that obtained \<^term>\S\ is + an injective \<^term>\\\<^bsub>1\<^esub>\-sequence of disjoint elements of \<^term>\G\.\ + moreover from this and \\A. A\G \ |A| = succ(n)\ \S : \\<^bsub>1\<^esub> \ G\ + have "S \ inj(\\<^bsub>1\<^esub>, G)" + using cardinal_succ_not_0 Int_eq_zero_imp_not_eq[of "\\<^bsub>1\<^esub>" "\x. S`x"] + unfolding inj_def by fastforce + moreover from calculation + have "range(S) \ \\<^bsub>1\<^esub>" + using inj_bij_range eqpoll_sym unfolding eqpoll_def by fast + moreover from calculation + have "range(S) \ G" + using inj_is_fun range_fun_subset_codomain by fast + ultimately + show "\D. D \ G \ delta_system(D) \ D \ \\<^bsub>1\<^esub>" + using inj_is_fun range_eq_image[of S "\\<^bsub>1\<^esub>" G] + image_function[OF fun_is_function, OF inj_is_fun, of S "\\<^bsub>1\<^esub>" G] + domain_of_fun[OF inj_is_fun, of S "\\<^bsub>1\<^esub>" G] + by (rule_tac x="S``\\<^bsub>1\<^esub>" in exI) auto + text\This finishes the successor case and hence the proof.\ + qed + qed + with \G \ F\ + show ?thesis by blast +qed + +lemma delta_system_uncountable: + assumes "\A\F. Finite(A)" "uncountable(F)" + shows "\D. D \ F \ delta_system(D) \ D \ \\<^bsub>1\<^esub>" +proof - + from assms + obtain S where "S \ F" "S \ \\<^bsub>1\<^esub>" + using uncountable_iff_subset_eqpoll_Aleph1[of F] by auto + moreover from \\A\F. Finite(A)\ and this + have "\A\S. Finite(A)" by auto + ultimately + show ?thesis using delta_system_Aleph1[of S] + by auto +qed + +end \ No newline at end of file diff --git a/thys/Delta_System_Lemma/Konig.thy b/thys/Delta_System_Lemma/Konig.thy new file mode 100644 --- /dev/null +++ b/thys/Delta_System_Lemma/Konig.thy @@ -0,0 +1,187 @@ +theory Konig + imports + Cofinality + Cardinal_Library + +begin + +text\Now, using the Axiom of choice, we can show that all successor +cardinals are regular.\ + +lemma cf_csucc: + assumes "InfCard(z)" + shows "cf(z\<^sup>+) = z\<^sup>+" +proof (rule ccontr) + assume "cf(z\<^sup>+) \ z\<^sup>+" + moreover from \InfCard(z)\ + have "Ord(z\<^sup>+)" "Ord(z)" "Limit(z)" "Limit(z\<^sup>+)" "Card(z\<^sup>+)" "Card(z)" + using InfCard_csucc Card_is_Ord InfCard_is_Card InfCard_is_Limit + by fastforce+ + moreover from calculation + have "cf(z\<^sup>+) < z\<^sup>+" + using cf_le_cardinal[of "z\<^sup>+", THEN le_iff[THEN iffD1]] + Card_cardinal_eq + by simp + ultimately + obtain G where "G:cf(z\<^sup>+)\ z\<^sup>+" "\\\z\<^sup>+. \y\cf(z\<^sup>+). \ < G`y" + using Limit_cofinal_fun_lt[of "z\<^sup>+" _ "cf(z\<^sup>+)"] Ord_cf + cf_le_cf_fun[of "z\<^sup>+" "cf(z\<^sup>+)"] le_refl[of "cf(z\<^sup>+)"] + by auto + with \Card(z)\ \Card(z\<^sup>+)\ \Ord(z\<^sup>+)\ + have "\\\cf(z\<^sup>+). |G`\| \ z" + using apply_type[of G "cf(z\<^sup>+)" "\_. z\<^sup>+", THEN ltI] Card_lt_iff[THEN iffD2] + Ord_in_Ord[OF Card_is_Ord, of "z\<^sup>+"] cardinal_lt_csucc_iff[THEN iffD1] + by auto + from \cf(z\<^sup>+) < z\<^sup>+\ \InfCard(z)\ \Ord(z)\ + have "cf(z\<^sup>+) \ z" + using cardinal_lt_csucc_iff[of "z" "cf(z\<^sup>+)"] Card_csucc[of "z"] + le_Card_iff[of "z" "cf(z\<^sup>+)"] InfCard_is_Card + Card_lt_iff[of "cf(z\<^sup>+)" "z\<^sup>+"] lt_Ord[of "cf(z\<^sup>+)" "z\<^sup>+"] + by simp + with \cf(z\<^sup>+) < z\<^sup>+\ \\\\cf(z\<^sup>+). |G`\| \ _\ \InfCard(z)\ + have "|\\\cf(z\<^sup>+). G`\| \ z" + using InfCard_csucc[of z] + subset_imp_lepoll[THEN lepoll_imp_Card_le, of "\\\cf(z\<^sup>+). G`\" "z"] + by (rule_tac leqpoll_imp_cardinal_UN_le) auto + moreover + note \Ord(z)\ + moreover from \\\\z\<^sup>+. \y\cf(z\<^sup>+). \ < G`y\ and this + have "z\<^sup>+ \ (\\\cf(z\<^sup>+). G`\)" + by (blast dest:ltD) + ultimately + have "z\<^sup>+ \ z" + using subset_imp_le_cardinal[of "z\<^sup>+" "\\\cf(z\<^sup>+). G`\"] le_trans + InfCard_is_Card Card_csucc[of z] Card_cardinal_eq + by auto + with \Ord(z)\ + show "False" + using lt_csucc[of z] not_lt_iff_le[THEN iffD2, of z "z\<^sup>+"] + Card_csucc[THEN Card_is_Ord] + by auto +qed + +text\And this finishes the calculation of cofinality of Alephs.\ + +lemma cf_Aleph_succ: "Ord(z) \ cf(\\<^bsub>succ(z)\<^esub>) = \\<^bsub>succ(z)\<^esub>" + using Aleph_succ cf_csucc InfCard_Aleph by simp + +subsection\König's Theorem\label{sec:konig}\ + +text\We end this section by proving König's Theorem on the cofinality +of cardinal exponentiation. This is a strengthening of Cantor's theorem +and it is essentially the only basic way to prove strict cardinal +inequalities. + +It is proved rather straightforwardly with the tools already developed.\ + +lemma konigs_theorem: + notes [dest] = InfCard_is_Card Card_is_Ord + and [trans] = lt_trans1 lt_trans2 + assumes + "InfCard(\)" "InfCard(\)" "cf(\) \ \" + shows + "\ < \\<^bsup>\\\<^esup>" + using assms(1,2) Card_cexp +proof (intro not_le_iff_lt[THEN iffD1] notI) + assume "\\<^bsup>\\\<^esup> \ \" + moreover + note \InfCard(\)\ + moreover from calculation + have "\ \ \ \ \" + using Card_cardinal_eq[OF InfCard_is_Card, symmetric] + Card_le_imp_lepoll + unfolding cexp_def by simp + ultimately + obtain G where "G \ surj(\, \ \ \)" + using inj_imp_surj[OF _ function_space_nonempty, + OF _ nat_into_InfCard] by blast + from assms + obtain f where "f:\ \ \" "cf_fun(f,\)" + using cf_le_cf_fun[OF _ InfCard_is_Limit] by blast + define H where "H(\) \ \ x. x\\ \ (\m. G`m`\ \ x)" + (is "_ \ \ x. ?P(\,x)") for \ + have H_satisfies: "?P(\,H(\))" if "\ \ \" for \ + proof - + obtain h where "?P(\,h)" + proof - + from \\\\\ \f:\ \ \\ \InfCard(\)\ + have "f`\ < \" + using apply_type[of _ _ "\_ . \"] by (auto intro:ltI) + have "|{G`m`\ . m \ {x\\ . x < f`\}}| \ |{x\\ . x < f`\}|" + using cardinal_RepFun_le by simp + also from \f`\ < \\ \InfCard(\)\ + have "|{x\\ . x < f`\}| < |\|" + using Card_lt_iff[OF lt_Ord, THEN iffD2, of "f`\" \ \] + Ord_eq_Collect_lt[of "f`\" \] Card_cardinal_eq + by force + finally + have "|{G`m`\ . m \ {x\\ . x < f`\}}| < |\|" . + moreover from \f`\ < \\ \InfCard(\)\ + have "m \ m\\" for m + using Ord_trans[of m "f`\" \] + by (auto dest:ltD) + ultimately + have "\h. ?P(\,h)" + using lt_cardinal_imp_not_subset by blast + with that + show ?thesis by blast + qed + with assms + show "?P(\,H(\))" + using LeastI[of "?P(\)" h] lt_Ord Ord_in_Ord + unfolding H_def by fastforce + qed + then + have "(\\\\. H(\)): \ \ \" + using lam_type by auto + with \G \ surj(\, \ \ \)\ + obtain n where "n\\" "G`n = (\\\\. H(\))" + unfolding surj_def by blast + moreover + note \InfCard(\)\ \f: \ \ \\ \cf_fun(f,_)\ + ultimately + obtain \ where "n < f`\" "\\\" + using Limit_cofinal_fun_lt[OF InfCard_is_Limit] by blast + moreover from calculation and \G`n = (\\\\. H(\))\ + have "G`n`\ = H(\)" + using ltD by simp + moreover from calculation and H_satisfies + have "\m. G`m`\ \ H(\)" by simp + ultimately + show "False" by blast +qed blast+ + +lemma cf_cexp: + assumes + "Card(\)" "InfCard(\)" "2 \ \" + shows + "\ < cf(\\<^bsup>\\\<^esup>)" +proof (rule ccontr) + assume "\ \ < cf(\\<^bsup>\\\<^esup>)" + with \InfCard(\)\ + have "cf(\\<^bsup>\\\<^esup>) \ \" + using not_lt_iff_le Ord_cf InfCard_is_Card Card_is_Ord by simp + moreover + note assms + moreover from calculation + have "InfCard(\\<^bsup>\\\<^esup>)" using InfCard_cexp by simp + moreover from calculation + have "\\<^bsup>\\\<^esup> < (\\<^bsup>\\\<^esup>)\<^bsup>\\\<^esup>" + using konigs_theorem by simp + ultimately + show "False" using cexp_cexp_cmult InfCard_csquare_eq by auto +qed + +text\Finally, the next two corollaries illustrate the only possible +exceptions to the value of the cardinality of the continuum: The limit +cardinals of countable cofinality. That these are the only exceptions +is a consequence of Easton's Theorem~\cite[Thm 15.18]{Jech_Millennium}.\ + +corollary cf_continuum: "\\<^bsub>0\<^esub> < cf(2\<^bsup>\\\<^bsub>0\<^esub>\<^esup>)" + using cf_cexp InfCard_Aleph nat_into_Card by simp + +corollary continuum_not_eq_Aleph_nat: "2\<^bsup>\\\<^bsub>0\<^esub>\<^esup> \ \\<^bsub>\\<^esub>" + using cf_continuum cf_Aleph_Limit[OF Limit_nat] cf_nat + Aleph_zero_eq_nat by auto + +end \ No newline at end of file diff --git a/thys/Delta_System_Lemma/ROOT b/thys/Delta_System_Lemma/ROOT new file mode 100644 --- /dev/null +++ b/thys/Delta_System_Lemma/ROOT @@ -0,0 +1,23 @@ +chapter AFP + +session Delta_System_Lemma (AFP) = "ZF-Constructible" + + description " + Cofinality and Delta System Lemma + + We formalize the basic results on cofinality of linearly ordered + sets and ordinals and Shanin's Lemma for uncountable families of + finite sets. This last result is used to prove the countable chain + condition for Cohen posets. We work in the set theory framework of + Isabelle/ZF, using the Axiom of Choice as needed. + " + options [timeout = 600] + theories + "Konig" + "Delta_System" + "Cohen_Posets" + document_files + "root.tex" + "header-delta-system.tex" + "multidef.sty" + "root.bib" + "root.bst" diff --git a/thys/Delta_System_Lemma/ZF_Library.thy b/thys/Delta_System_Lemma/ZF_Library.thy new file mode 100644 --- /dev/null +++ b/thys/Delta_System_Lemma/ZF_Library.thy @@ -0,0 +1,996 @@ +section\Library of basic $\ZF$ results\label{sec:zf-lib}\ + +theory ZF_Library + imports + "ZF-Constructible.Normal" + +begin + +text\This theory gathers basic ``combinatorial'' results that can be proved +in $\ZF$ (that is, without using the Axiom of Choice $\AC$). +\ + +text\We begin by setting up math-friendly notation.\ + +no_notation oadd (infixl \++\ 65) +no_notation sum (infixr \+\ 65) +notation oadd (infixl \+\ 65) +notation nat (\\\) +notation csucc (\_\<^sup>+\ [90]) +no_notation Aleph (\\_\ [90] 90) +notation Aleph (\\\<^bsub>_\<^esub>\) +syntax "_ge" :: "[i,i] \ o" (infixl \\\ 50) +translations "x \ y" \ "y \ x" + + +subsection\Some minimal arithmetic/ordinal stuff\ + +lemma Un_leD1 : "i \ j \ k \ Ord(i) \ Ord(j) \ Ord(k) \ i \ k" + by (rule Un_least_lt_iff[THEN iffD1[THEN conjunct1]],simp_all) + +lemma Un_leD2 : "i \ j \ k \ Ord(i) \ Ord(j) \ Ord(k) \ j \ k" + by (rule Un_least_lt_iff[THEN iffD1[THEN conjunct2]],simp_all) + +lemma Un_memD1: "i \ j \ k \ Ord(i) \ Ord(j) \ Ord(k) \ i \ k" + by (drule ltI, assumption, drule leI, rule Un_least_lt_iff[THEN iffD1[THEN conjunct1]],simp_all) + +lemma Un_memD2 : "i \ j \ k \ Ord(i) \ Ord(j) \ Ord(k) \ j \ k" + by (drule ltI, assumption, drule leI, rule Un_least_lt_iff[THEN iffD1[THEN conjunct2]],simp_all) + +text\This lemma allows to apply arithmetic simprocs to ordinal addition\ +lemma nat_oadd_add[simp]: + assumes "m \ \" "n \ \" shows "n + m = n #+ m" + using assms + by induct simp_all + +lemma Ord_has_max_imp_succ: + assumes "Ord(\)" "\ \ \" "\\\\. \ \ \" + shows "\ = succ(\)" + using assms Ord_trans[of _ \ \] + unfolding lt_def + by (intro equalityI subsetI) auto + +lemma Least_antitone: + assumes + "Ord(j)" "P(j)" "\i. P(i) \ Q(i)" + shows + "(\ i. Q(i)) \ (\ i. P(i))" + using assms LeastI2[of P j Q] Least_le by simp + +lemma Least_set_antitone: + "Ord(j) \ j\A \ A \ B \ (\ i. i\B) \ (\ i. i\A)" + using subset_iff by (auto intro:Least_antitone) + +lemma le_neq_imp_lt: + "x\y \ x\y \ xStrict upper bound of a set of ordinals.\ +definition + str_bound :: "i\i" where + "str_bound(A) \ \a\A. succ(a)" + +lemma str_bound_type [TC]: "\a\A. Ord(a) \ Ord(str_bound(A))" + unfolding str_bound_def by auto + +lemma str_bound_lt: "\a\A. Ord(a) \ \a\A. a < str_bound(A)" + unfolding str_bound_def using str_bound_type + by (blast intro:ltI) + +lemma naturals_lt_nat[intro]: "n \ \ \ n < \" + unfolding lt_def by simp + +text\The next two lemmas are handy when one is constructing +some object recursively. The first handles injectivity (of recursively +constructed sequences of sets), while the second is helpful for +establishing a symmetry argument.\ +lemma Int_eq_zero_imp_not_eq: + assumes + "\x y. x\D \ y \ D \ x \ y \ A(x) \ A(y) = 0" + "\x. x\D \ A(x) \ 0" "a\D" "b\D" "a\b" + shows + "A(a) \ A(b)" + using assms by fastforce + +lemma lt_neq_symmetry: + assumes + "\\ \. \ \ \ \ \ \ \ \ \ < \ \ Q(\,\)" + "\\ \. Q(\,\) \ Q(\,\)" + "\ \ \" "\ \ \" "\ \ \" + "Ord(\)" + shows + "Q(\,\)" +proof - + from assms + consider "\<\" | "\<\" + using Ord_linear_lt[of \ \ thesis] Ord_in_Ord[of \] + by auto + then + show ?thesis by cases (auto simp add:assms) +qed + +lemma cardinal_succ_not_0: "|A| = succ(n) \ A \ 0" + by auto + +lemma Ord_eq_Collect_lt: "i<\ \ {j\\. j \almost the same proof as @{thm nat_eq_Collect_lt}\ + apply (rule equalityI) + apply (blast dest: ltD) + apply (auto simp add: Ord_mem_iff_lt) + apply (rule Ord_trans ltI[OF _ lt_Ord]; auto simp add:lt_def dest:ltD)+ + done + + +subsection\Manipulation of function spaces\ + +definition + Finite_to_one :: "[i,i] \ i" where + "Finite_to_one(X,Y) \ {f:X\Y. \y\Y. Finite({x\X . f`x = y})}" + +lemma Finite_to_oneI[intro]: + assumes "f:X\Y" "\y. y\Y \ Finite({x\X . f`x = y})" + shows "f \ Finite_to_one(X,Y)" + using assms unfolding Finite_to_one_def by simp + +lemma Finite_to_oneD[dest]: + "f \ Finite_to_one(X,Y) \ f:X\Y" + "f \ Finite_to_one(X,Y) \ y\Y \ Finite({x\X . f`x = y})" + unfolding Finite_to_one_def by simp_all + +lemma subset_Diff_Un: "X \ A \ A = (A - X) \ X " by auto + +lemma Diff_bij: + assumes "\A\F. X \ A" shows "(\A\F. A-X) \ bij(F, {A-X. A\F})" + using assms unfolding bij_def inj_def surj_def + by (auto intro:lam_type, subst subset_Diff_Un[of X]) auto + +lemma function_space_nonempty: + assumes "b\B" + shows "(\x\A. b) : A \ B" + using assms lam_type by force + +lemma vimage_lam: "(\x\A. f(x)) -`` B = { x\A . f(x) \ B }" + using lam_funtype[of A f, THEN [2] domain_type] + lam_funtype[of A f, THEN [2] apply_equality] lamI[of _ A f] + by auto blast + +lemma range_fun_subset_codomain: + assumes "h:B \ C" + shows "range(h) \ C" + unfolding range_def domain_def converse_def using range_type[OF _ assms] by auto + +lemma Pi_rangeD: + assumes "f\Pi(A,B)" "b \ range(f)" + shows "\a\A. f`a = b" + using assms apply_equality[OF _ assms(1), of _ b] + domain_type[OF _ assms(1)] by auto + +lemma Pi_range_eq: "f \ Pi(A,B) \ range(f) = {f ` x . x \ A}" + using Pi_rangeD[of f A B] apply_rangeI[of f A B] + by blast + +lemma Pi_vimage_subset : "f \ Pi(A,B) \ f-``C \ A" + unfolding Pi_def by auto + +lemma apply_in_range: + assumes + "Ord(\)" "\\0" "f: A \ \" + shows + "f`x\\" +proof (cases "x\A") + case True + from assms \x\A\ + show ?thesis + using domain_of_fun apply_rangeI by simp +next + case False + from assms \x\A\ + show ?thesis + using apply_0 Ord_0_lt ltD domain_of_fun by auto +qed + +lemma range_eq_image: + assumes "f:A\B" + shows "range(f) = f``A" +proof + show "f `` A \ range(f)" + unfolding image_def by blast + { + fix x + assume "x\range(f)" + with assms + have "x\f``A" + using domain_of_fun[of f A "\_. B"] by auto + } + then + show "range(f) \ f `` A" .. +qed + +lemma Image_sub_codomain: "f:A\B \ f``C \ B" + using image_subset fun_is_rel[of _ _ "\_ . B"] by force + +lemma inj_to_Image: + assumes + "f:A\B" "f \ inj(A,B)" + shows + "f \ inj(A,f``A)" + using assms inj_inj_range range_eq_image by force + +lemma inj_imp_surj: + fixes f b + notes inj_is_fun[dest] + defines [simp]: "ifx(x) \ if x\range(f) then converse(f)`x else b" + assumes "f \ inj(B,A)" "b\B" + shows "(\x\A. ifx(x)) \ surj(A,B)" +proof - + from assms + have "converse(f) \ surj(range(f),B)" "range(f) \ A" + "converse(f) : range(f) \ B" + using inj_converse_surj range_fun_subset_codomain surj_is_fun by blast+ + with \b\B\ + show "(\x\A. ifx(x)) \ surj(A,B)" + unfolding surj_def + proof (intro CollectI lam_type ballI; elim CollectE) + fix y + assume "y \ B" "\y\B. \x\range(f). converse(f) ` x = y" + with \range(f) \ A\ + show "\x\A. (\x\A. ifx(x)) ` x = y" + by (drule_tac bspec, auto) + qed simp +qed + +lemma fun_Pi_disjoint_Un: + assumes "f \ Pi(A,B)" "g \ Pi(C,D)" "A \ C = 0" + shows "f \ g \ Pi(A \ C, \x. B(x) \ D(x))" + using assms + by (simp add: Pi_iff extension Un_rls) (unfold function_def, blast) + +lemma Un_restrict_decomposition: + assumes "f \ Pi(A,B)" + shows "f = restrict(f, A \ C) \ restrict(f, A - C)" + using assms +proof (rule fun_extension) + from assms + have "restrict(f,A\C) \ restrict(f,A-C) \ Pi(A\C \ (A-C), \x. B(x)\B(x))" + using restrict_type2[of f A B] + by (rule_tac fun_Pi_disjoint_Un) force+ + moreover + have "(A \ C) \ (A - C) = A" by auto + ultimately + show "restrict(f, A \ C) \ restrict(f, A - C) \ Pi(A, B)" by simp +next + fix x + assume "x \ A" + with assms + show "f ` x = (restrict(f, A \ C) \ restrict(f, A - C)) ` x" + using restrict fun_disjoint_apply1[of _ "restrict(f,_)"] + fun_disjoint_apply2[of _ "restrict(f,_)"] + domain_restrict[of f] apply_0 domain_of_fun + by (cases "x\C") simp_all +qed + +lemma restrict_eq_imp_Un_into_Pi: + assumes "f \ Pi(A,B)" "g \ Pi(C,D)" "restrict(f, A \ C) = restrict(g, A \ C)" + shows "f \ g \ Pi(A \ C, \x. B(x) \ D(x))" +proof - + note assms + moreover from this + have "x \ g \ x \ restrict(g, A \ C)" for x + using restrict_subset[of g "A \ C"] by auto + moreover from calculation + have "x \ f \ x \ restrict(f, A - C) \ x \ restrict(g, A \ C)" for x + by (subst (asm) Un_restrict_decomposition[of f A B "C"]) auto + ultimately + have "f \ g = restrict(f, A - C) \ g" + using restrict_subset[of g "A \ C"] + by (subst Un_restrict_decomposition[of f A B "C"]) auto + moreover + have "A - C \ C = A \ C" by auto + moreover + note assms + ultimately + show ?thesis + using fun_Pi_disjoint_Un[OF + restrict_type2[of f A B "A-C"], of g C D] + by auto +qed + +lemma restrict_eq_imp_Un_into_Pi': + assumes "f \ Pi(A,B)" "g \ Pi(C,D)" + "restrict(f, domain(f) \ domain(g)) = restrict(g, domain(f) \ domain(g))" + shows "f \ g \ Pi(A \ C, \x. B(x) \ D(x))" + using assms domain_of_fun restrict_eq_imp_Un_into_Pi by simp + +lemma restrict_subset_Sigma: "f \ Sigma(C,B) \ restrict(f,A) \ Sigma(A\C, B)" + by (auto simp add: restrict_def) + + +subsection\Finite sets\ + +lemma Replace_sing1: + "\ (\a. P(d,a)) \ (\y y'. P(d,y) \ P(d,y') \ y=y') \ \ \a. {y . x \ {d}, P(x,y)} = {a}" + by blast + +\ \Not really necessary\ +lemma Replace_sing2: + assumes "\a. \ P(d,a)" + shows "{y . x \ {d}, P(x,y)} = 0" + using assms by auto + +lemma Replace_sing3: + assumes "\c e. c \ e \ P(d,c) \ P(d,e)" + shows "{y . x \ {d}, P(x,y)} = 0" +proof - + { + fix z + { + assume "\y. P(d, y) \ y = z" + with assms + have "False" by auto + } + then + have "z \ {y . x \ {d}, P(x,y)}" + using Replace_iff by auto + } + then + show ?thesis + by (intro equalityI subsetI) simp_all +qed + +lemma Replace_Un: "{b . a \ A \ B, Q(a, b)} = + {b . a \ A, Q(a, b)} \ {b . a \ B, Q(a, b)}" + by (intro equalityI subsetI) (auto simp add:Replace_iff) + +lemma Replace_subset_sing: "\z. {y . x \ {d}, P(x,y)} \ {z}" +proof - + consider + (1) "(\a. P(d,a)) \ (\y y'. P(d,y) \ P(d,y') \ y=y')" | + (2) "\a. \ P(d,a)" | (3) "\c e. c \ e \ P(d,c) \ P(d,e)" by auto + then + show "\z. {y . x \ {d}, P(x,y)} \ {z}" + proof (cases) + case 1 + then show ?thesis using Replace_sing1[of P d] by auto + next + case 2 + then show ?thesis by auto + next + case 3 + then show ?thesis using Replace_sing3[of P d] by auto + qed +qed + +lemma Finite_Replace: "Finite(A) \ Finite(Replace(A,Q))" +proof (induct rule:Finite_induct) + case 0 + then + show ?case by simp +next + case (cons x B) + moreover + have "{b . a \ cons(x, B), Q(a, b)} = + {b . a \ B, Q(a, b)} \ {b . a \ {x}, Q(a, b)}" + using Replace_Un unfolding cons_def by auto + moreover + obtain d where "{b . a \ {x}, Q(a, b)} \ {d}" + using Replace_subset_sing[of _ Q] by blast + moreover from this + have "Finite({b . a \ {x}, Q(a, b)})" + using subset_Finite by simp + ultimately + show ?case using subset_Finite by simp +qed + +lemma Finite_domain: "Finite(A) \ Finite(domain(A))" + using Finite_Replace unfolding domain_def + by auto + +lemma Finite_converse: "Finite(A) \ Finite(converse(A))" + using Finite_Replace unfolding converse_def + by auto + +lemma Finite_range: "Finite(A) \ Finite(range(A))" + using Finite_domain Finite_converse unfolding range_def + by blast + +lemma Finite_Sigma: "Finite(A) \ \x. Finite(B(x)) \ Finite(Sigma(A,B))" + unfolding Sigma_def using Finite_RepFun Finite_Union + by simp + +lemma Finite_Pi: "Finite(A) \ \x. Finite(B(x)) \ Finite(Pi(A,B))" + using Finite_Sigma + Finite_Pow subset_Finite[of "Pi(A,B)" "Pow(Sigma(A,B))"] + unfolding Pi_def + by auto + + +subsection\Basic results on equipollence, cardinality and related concepts\ + +lemma lepollD[dest]: "A \ B \ \f. f \ inj(A, B)" + unfolding lepoll_def . + +lemma lepollI[intro]: "f \ inj(A, B) \ A \ B" + unfolding lepoll_def by blast + +lemma eqpollD[dest]: "A \ B \ \f. f \ bij(A, B)" + unfolding eqpoll_def . + +declare bij_imp_eqpoll[intro] + +lemma range_of_subset_eqpoll: + assumes "f \ inj(X,Y)" "S \ X" + shows "S \ f `` S" + using assms restrict_bij by blast + +text\I thank Miguel Pagano for this proof.\ +lemma function_space_eqpoll_cong: + assumes + "A \ A'" "B \ B'" + shows + "A \ B \ A' \ B'" +proof - + from assms(1)[THEN eqpoll_sym] assms(2) + obtain f g where "f \ bij(A',A)" "g \ bij(B,B')" + by blast + then + have "converse(g) : B' \ B" "converse(f): A \ A'" + using bij_converse_bij bij_is_fun by auto + show ?thesis + unfolding eqpoll_def + proof (intro exI fg_imp_bijective, rule_tac [1-2] lam_type) + fix F + assume "F: A \ B" + with \f \ bij(A',A)\ \g \ bij(B,B')\ + show "g O F O f : A' \ B'" + using bij_is_fun comp_fun by blast + next + fix F + assume "F: A' \ B'" + with \converse(g) : B' \ B\ \converse(f): A \ A'\ + show "converse(g) O F O converse(f) : A \ B" + using comp_fun by blast + next + from \f\_\ \g\_\ \converse(f)\_\ \converse(g)\_\ + have "(\x. x \ A' \ B' \ converse(g) O x O converse(f) \ A \ B)" + using bij_is_fun comp_fun by blast + then + have "(\x\A \ B. g O x O f) O (\x\A' \ B'. converse(g) O x O converse(f)) + = (\x\A' \ B' . (g O converse(g)) O x O (converse(f) O f))" + using lam_cong comp_assoc comp_lam[of "A' \ B'" ] by auto + also + have "... = (\x\A' \ B' . id(B') O x O (id(A')))" + using left_comp_inverse[OF bij_is_inj[OF \f\_\]] + right_comp_inverse[OF bij_is_surj[OF \g\_\]] + by auto + also + have "... = (\x\A' \ B' . x)" + using left_comp_id[OF fun_is_rel] right_comp_id[OF fun_is_rel] lam_cong by auto + also + have "... = id(A'\B')" unfolding id_def by simp + finally + show "(\x\A -> B. g O x O f) O (\x\A' -> B'. converse(g) O x O converse(f)) = id(A' -> B')" . + next + from \f\_\ \g\_\ + have "(\x. x \ A \ B \ g O x O f \ A' \ B')" + using bij_is_fun comp_fun by blast + then + have "(\x\A' -> B'. converse(g) O x O converse(f)) O (\x\A -> B. g O x O f) + = (\x\A \ B . (converse(g) O g) O x O (f O converse(f)))" + using comp_lam comp_assoc by auto + also + have "... = (\x\A \ B . id(B) O x O (id(A)))" + using + right_comp_inverse[OF bij_is_surj[OF \f\_\]] + left_comp_inverse[OF bij_is_inj[OF \g\_\]] lam_cong + by auto + also + have "... = (\x\A \ B . x)" + using left_comp_id[OF fun_is_rel] right_comp_id[OF fun_is_rel] lam_cong by auto + also + have "... = id(A\B)" unfolding id_def by simp + finally + show "(\x\A' \ B'. converse(g) O x O converse(f)) O (\x\A -> B. g O x O f) = id(A -> B)" . + qed +qed + +lemma curry_eqpoll: + fixes d \1 \2 \ + shows "\1 \ \2 \ \ \ \1 \ \2 \ \" + unfolding eqpoll_def +proof (intro exI, rule lam_bijective, + rule_tac [1-2] lam_type, rule_tac [2] lam_type) + fix f z + assume "f : \1 \ \2 \ \" "z \ \1 \ \2" + then + show "f`fst(z)`snd(z) \ \" + by simp +next + fix f x y + assume "f : \1 \ \2 \ \" "x\\1" "y\\2" + then + show "f`\x,y\ \ \" by simp +next \ \one composition is the identity:\ + fix f + assume "f : \1 \ \2 \ \" + then + show "(\x\\1 \ \2. (\x\\1. \xa\\2. f ` \x, xa\) ` fst(x) ` snd(x)) = f" + by (auto intro:fun_extension) +qed simp \ \the other composition follows automatically\ + +lemma Pow_eqpoll_function_space: + fixes d X + notes bool_of_o_def [simp] + defines [simp]:"d(A) \ (\x\X. bool_of_o(x\A))" + \ \the witnessing map for the thesis:\ + shows "Pow(X) \ X \ 2" + unfolding eqpoll_def +proof (intro exI, rule lam_bijective) + \ \We give explicit mutual inverses\ + fix A + assume "A\Pow(X)" + then + show "d(A) : X \ 2" + using lam_type[of _ "\x. bool_of_o(x\A)" "\_. 2"] + by force + from \A\Pow(X)\ + show "{y\X. d(A)`y = 1} = A" + by (auto) +next + fix f + assume "f: X\2" + then + show "d({y \ X . f ` y = 1}) = f" + using apply_type[OF \f: X\2\] + by (force intro:fun_extension) +qed blast + +lemma cantor_inj: "f \ inj(Pow(A),A)" + using inj_imp_surj[OF _ Pow_bottom] cantor_surj by blast + +definition + cexp :: "[i,i] \ i" ("_\<^bsup>\_\<^esup>" [76,1] 75) where + "\\<^bsup>\\\<^esup> \ |\ \ \|" + +lemma Card_cexp: "Card(\\<^bsup>\\\<^esup>)" + unfolding cexp_def Card_cardinal by simp + +lemma eq_csucc_ord: + "Ord(i) \ i\<^sup>+ = |i|\<^sup>+" + using Card_lt_iff Least_cong unfolding csucc_def by auto + +text\I thank Miguel Pagano for this proof.\ +lemma lesspoll_csucc: + assumes "Ord(\)" + shows "d \ \\<^sup>+ \ d \ \" +proof + assume "d \ \\<^sup>+" + moreover + note Card_is_Ord \Ord(\)\ + moreover from calculation + have "\ < \\<^sup>+" "Card(\\<^sup>+)" + using Ord_cardinal_eqpoll csucc_basic by simp_all + moreover from calculation + have "d \ |\|\<^sup>+" "Card(|\|)" "d \ |d|" + using eq_csucc_ord[of \] lesspoll_imp_eqpoll eqpoll_sym by simp_all + moreover from calculation + have "|d| < |\|\<^sup>+" + using lesspoll_cardinal_lt csucc_basic by simp + moreover from calculation + have "|d| \ |\|" + using Card_lt_csucc_iff le_imp_lepoll by simp + moreover from calculation + have "|d| \ \" + using lepoll_eq_trans Ord_cardinal_eqpoll by simp + ultimately + show "d \ \" + using eq_lepoll_trans by simp +next + from \Ord(\)\ + have "\ < \\<^sup>+" "Card(\\<^sup>+)" + using csucc_basic by simp_all + moreover + assume "d \ \" + ultimately + have "d \ \\<^sup>+" + using le_imp_lepoll leI lepoll_trans by simp + moreover + from \d \ \\ \Ord(\)\ + have "\\<^sup>+ \ \" if "d \ \\<^sup>+" + using eqpoll_sym[OF that] eq_lepoll_trans[OF _ \d\\\] by simp + moreover from calculation \Card(_)\ + have "\ d \ \\<^sup>+" + using lesspoll_irrefl lesspoll_trans1 lt_Card_imp_lesspoll[OF _ \\ <_\] + by auto + ultimately + show "d \ \\<^sup>+" + unfolding lesspoll_def by simp +qed + +abbreviation + Infinite :: "i\o" where + "Infinite(X) \ \ Finite(X)" + +lemma Infinite_not_empty: "Infinite(X) \ X \ 0" + using empty_lepollI by auto + +lemma Infinite_imp_nats_lepoll: + assumes "Infinite(X)" "n \ \" + shows "n \ X" + using \n \ \\ +proof (induct) + case 0 + then + show ?case using empty_lepollI by simp +next + case (succ x) + show ?case + proof - + from \Infinite(X)\ and \x \ \\ + have "\ (x \ X)" + using eqpoll_sym unfolding Finite_def by auto + with \x \ X\ + obtain f where "f \ inj(x,X)" "f \ surj(x,X)" + unfolding bij_def eqpoll_def by auto + moreover from this + obtain b where "b \ X" "\a\x. f`a \ b" + using inj_is_fun unfolding surj_def by auto + ultimately + have "f \ inj(x,X-{b})" + unfolding inj_def by (auto intro:Pi_type) + then + have "cons(\x, b\, f) \ inj(succ(x), cons(b, X - {b}))" + using inj_extend[of f x "X-{b}" x b] unfolding succ_def + by (auto dest:mem_irrefl) + moreover from \b\X\ + have "cons(b, X - {b}) = X" by auto + ultimately + show "succ(x) \ X" by auto + qed +qed + +lemma zero_lesspoll: assumes "0<\" shows "0 \ \" + using assms eqpoll_0_iff[THEN iffD1, of \] eqpoll_sym + unfolding lesspoll_def lepoll_def + by (auto simp add:inj_def) + +lemma lepoll_nat_imp_Infinite: "\ \ X \ Infinite(X)" +proof (rule ccontr, simp) + assume "\ \ X" "Finite(X)" + moreover from this + obtain n where "X \ n" "n \ \" + unfolding Finite_def by auto + moreover from calculation + have "\ \ n" + using lepoll_eq_trans by simp + ultimately + show "False" + using lepoll_nat_imp_Finite nat_not_Finite by simp +qed + +lemma InfCard_imp_Infinite: "InfCard(\) \ Infinite(\)" + using le_imp_lepoll[THEN lepoll_nat_imp_Infinite, of \] + unfolding InfCard_def by simp + +lemma lt_surj_empty_imp_Card: + assumes "Ord(\)" "\\. \ < \ \ surj(\,\) = 0" + shows "Card(\)" +proof - + { + assume "|\| < \" + with assms + have "False" + using LeastI[of "\i. i \ \" \, OF eqpoll_refl] + Least_le[of "\i. i \ \" "|\|", OF Ord_cardinal_eqpoll] + unfolding Card_def cardinal_def eqpoll_def bij_def + by simp + } + with assms + show ?thesis + using Ord_cardinal_le[of \] not_lt_imp_le[of "|\|" \] le_anti_sym + unfolding Card_def by auto +qed + + +subsection\Morphisms of binary relations\ + +text\The main case of interest is in the case of partial orders.\ + +lemma mono_map_mono: + assumes + "f \ mono_map(A,r,B,s)" "B \ C" + shows + "f \ mono_map(A,r,C,s)" + unfolding mono_map_def +proof (intro CollectI ballI impI) + from \f \ mono_map(A,_,B,_)\ + have "f: A \ B" + using mono_map_is_fun by simp + with \B\C\ + show "f: A \ C" + using fun_weaken_type by simp + fix x y + assume "x\A" "y\A" "\x,y\ \ r" + moreover from this and \f: A \ B\ + have "f`x \ B" "f`y \ B" + using apply_type by simp_all + moreover + note \f \ mono_map(_,r,_,s)\ + ultimately + show "\f ` x, f ` y\ \ s" + unfolding mono_map_def by blast +qed + +lemma ordertype_zero_imp_zero: "ordertype(A,r) = 0 \ A = 0" + using ordermap_type[of A r] + by (cases "A=0") auto + +lemma mono_map_increasing: + "j\mono_map(A,r,B,s) \ a\A \ c\A \ \a,c\\r \ \j`a,j`c\\s" + unfolding mono_map_def by simp + +lemma linear_mono_map_reflects: + assumes + "linear(\,r)" "trans[\](s)" "irrefl(\,s)" "f\mono_map(\,r,\,s)" + "x\\" "y\\" "\f`x,f`y\\s" + shows + "\x,y\\r" +proof - + from \f\mono_map(_,_,_,_)\ + have preserves:"x\\ \ y\\ \ \x,y\\r \ \f`x,f`y\\s" for x y + unfolding mono_map_def by blast + { + assume "\x, y\ \ r" "x\\" "y\\" + moreover + note \\f`x,f`y\\s\ and \linear(\,r)\ + moreover from calculation + have "y = x \ \y,x\\r" + unfolding linear_def by blast + moreover + note preserves [of y x] + ultimately + have "y = x \ \f`y, f`x\\ s" by blast + moreover from \f\mono_map(_,_,\,_)\ \x\\\ \y\\\ + have "f`x\\" "f`y\\" + using apply_type[OF mono_map_is_fun] by simp_all + moreover + note \\f`x,f`y\\s\ \trans[\](s)\ \irrefl(\,s)\ + ultimately + have "False" + using trans_onD[of \ s "f`x" "f`y" "f`x"] irreflE by blast + } + with assms + show "\x,y\\r" by blast +qed + +lemma irrefl_Memrel: "irrefl(x, Memrel(x))" + unfolding irrefl_def using mem_irrefl by auto + +lemmas Memrel_mono_map_reflects = linear_mono_map_reflects + [OF well_ord_is_linear[OF well_ord_Memrel] well_ord_is_trans_on[OF well_ord_Memrel] + irrefl_Memrel] + +\ \Same proof as Paulson's @{thm mono_map_is_inj}\ +lemma mono_map_is_inj': + "\ linear(A,r); irrefl(B,s); f \ mono_map(A,r,B,s) \ \ f \ inj(A,B)" + unfolding irrefl_def mono_map_def inj_def using linearE + by (clarify, rename_tac x w) + (erule_tac x=w and y=x in linearE, assumption+, (force intro: apply_type)+) + +lemma mono_map_imp_ord_iso_image: + assumes + "linear(\,r)" "trans[\](s)" "irrefl(\,s)" "f\mono_map(\,r,\,s)" + shows + "f \ ord_iso(\,r,f``\,s)" + unfolding ord_iso_def +proof (intro CollectI ballI iffI) + \ \Enough to show it's bijective and preserves both ways\ + from assms + have "f \ inj(\,\)" + using mono_map_is_inj' by blast + moreover from \f \ mono_map(_,_,_,_)\ + have "f \ surj(\, f``\)" + unfolding mono_map_def using surj_image by auto + ultimately + show "f \ bij(\, f``\)" + unfolding bij_def using inj_is_fun inj_to_Image by simp + from \f\mono_map(_,_,_,_)\ + show "x\\ \ y\\ \ \x,y\\r \ \f`x,f`y\\s" for x y + unfolding mono_map_def by blast + with assms + show "\f`x,f`y\\s \ x\\ \ y\\ \ \x,y\\r" for x y + using linear_mono_map_reflects + by blast +qed + +text\We introduce the following notation for strictly increasing maps +between ordinals.\ + +abbreviation + mono_map_Memrel :: "[i,i] \ i" (infixr \\\<^sub><\ 60) where + "\ \\<^sub>< \ \ mono_map(\,Memrel(\),\,Memrel(\))" + +lemma mono_map_imp_ord_iso_Memrel: + assumes + "Ord(\)" "Ord(\)" "f:\ \\<^sub>< \" + shows + "f \ ord_iso(\,Memrel(\),f``\,Memrel(\))" + using assms mono_map_imp_ord_iso_image[OF well_ord_is_linear[OF well_ord_Memrel] + well_ord_is_trans_on[OF well_ord_Memrel] irrefl_Memrel] by blast + +lemma mono_map_ordertype_image': + assumes + "X\\" "Ord(\)" "Ord(\)" "f \ mono_map(X,Memrel(\),\,Memrel(\))" + shows + "ordertype(f``X,Memrel(\)) = ordertype(X,Memrel(\))" + using assms mono_map_is_fun[of f X _ \] ordertype_eq + mono_map_imp_ord_iso_image[OF well_ord_is_linear[OF well_ord_Memrel, THEN linear_subset] + well_ord_is_trans_on[OF well_ord_Memrel] irrefl_Memrel, of \ X \ f] + well_ord_subset[OF well_ord_Memrel] Image_sub_codomain[of f X \ X] by auto + +lemma mono_map_ordertype_image: + assumes + "Ord(\)" "Ord(\)" "f:\ \\<^sub>< \" + shows + "ordertype(f``\,Memrel(\)) = \" + using assms mono_map_is_fun ordertype_Memrel ordertype_eq[of f \ "Memrel(\)"] + mono_map_imp_ord_iso_Memrel well_ord_subset[OF well_ord_Memrel] Image_sub_codomain[of _ \] + by auto + +lemma apply_in_image: "f:A\B \ a\A \ f`a \ f``A" + using range_eq_image apply_rangeI[of f] by simp + +lemma Image_subset_Ord_imp_lt: + assumes + "Ord(\)" "h``A \ \" "x\domain(h)" "x\A" "function(h)" + shows + "h`x < \" + using assms + unfolding domain_def using imageI ltI function_apply_equality by auto + +lemma ordermap_le_arg: + assumes + "X\\" "x\X" "Ord(\)" + shows + "x\X \ ordermap(X,Memrel(\))`x\x" +proof (induct rule:Ord_induct[OF subsetD, OF assms]) + case (1 x) + have "wf[X](Memrel(\))" + using wf_imp_wf_on[OF wf_Memrel] . + with 1 + have "ordermap(X,Memrel(\))`x = {ordermap(X,Memrel(\))`y . y\{y\X . y\x \ y\\}}" + using ordermap_unfold Ord_trans[of _ x \] by auto + also from assms + have "... = {ordermap(X,Memrel(\))`y . y\{y\X . y\x}}" + using Ord_trans[of _ x \] Ord_in_Ord by blast + finally + have ordm:"ordermap(X,Memrel(\))`x = {ordermap(X,Memrel(\))`y . y\{y\X . y\x}}" . + from 1 + have "y\x \ y\X \ ordermap(X,Memrel(\))`y \ y" for y by simp + with \x\\\ and \Ord(\)\ + have "y\x \ y\X \ ordermap(X,Memrel(\))`y \ x" for y + using ltI[OF _ Ord_in_Ord[of \ x]] lt_trans1 ltD by blast + with ordm + have "ordermap(X,Memrel(\))`x \ x" by auto + with \x\X\ assms + show ?case + using subset_imp_le Ord_in_Ord[of \ x] Ord_ordermap + well_ord_subset[OF well_ord_Memrel, of \] by force +qed + +lemma subset_imp_ordertype_le: + assumes + "X\\" "Ord(\)" + shows + "ordertype(X,Memrel(\))\\" +proof - + { + fix x + assume "x\X" + with assms + have "ordermap(X,Memrel(\))`x \ x" + using ordermap_le_arg by simp + with \x\X\ and assms + have "ordermap(X,Memrel(\))`x \ \" (is "?y \ _") + using ltD[of ?y "succ(x)"] Ord_trans[of ?y x \] by auto + } + then + have "ordertype(X, Memrel(\)) \ \" + using ordertype_unfold[of X] by auto + with assms + show ?thesis + using subset_imp_le Ord_ordertype[OF well_ord_subset, OF well_ord_Memrel] by simp +qed + +lemma mono_map_imp_le: + assumes + "f\mono_map(\, Memrel(\),\, Memrel(\))" "Ord(\)" "Ord(\)" + shows + "\\\" +proof - + from assms + have "f \ \\, Memrel(\)\ \ \f``\, Memrel(\)\" + using mono_map_imp_ord_iso_Memrel by simp + then + have "converse(f) \ \f``\, Memrel(\)\ \ \\, Memrel(\)\" + using ord_iso_sym by simp + with \Ord(\)\ + have "\ = ordertype(f``\,Memrel(\))" + using ordertype_eq well_ord_Memrel ordertype_Memrel by auto + also from assms + have "ordertype(f``\,Memrel(\)) \ \" + using subset_imp_ordertype_le mono_map_is_fun[of f] Image_sub_codomain[of f] by force + finally + show ?thesis . +qed + +\ \\<^term>\Ord(A) \ f \ mono_map(A, Memrel(A), B, Memrel(Aa)) \ f \ inj(A, B)\\ +lemmas Memrel_mono_map_is_inj = mono_map_is_inj + [OF well_ord_is_linear[OF well_ord_Memrel] + wf_imp_wf_on[OF wf_Memrel]] + +lemma mono_mapI: + assumes "f: A\B" "\x y. x\A \ y\A \ \x,y\\r \ \f`x,f`y\\s" + shows "f \ mono_map(A,r,B,s)" + unfolding mono_map_def using assms by simp + +lemmas mono_mapD = mono_map_is_fun mono_map_increasing + +bundle mono_map_rules = mono_mapI[intro!] mono_map_is_fun[dest] mono_mapD[dest] + +lemma nats_le_InfCard: + assumes "n \ \" "InfCard(\)" + shows "n \ \" + using assms Ord_is_Transset + le_trans[of n \ \, OF le_subset_iff[THEN iffD2]] + unfolding InfCard_def Transset_def by simp + +lemma nat_into_InfCard: + assumes "n \ \" "InfCard(\)" + shows "n \ \" + using assms le_imp_subset[of \ \] + unfolding InfCard_def by auto + + +subsection\Alephs are infinite cardinals\ + +lemma Aleph_zero_eq_nat: "\\<^bsub>0\<^esub> = \" + unfolding Aleph_def by simp + +lemma InfCard_Aleph: + notes Aleph_zero_eq_nat[simp] + assumes "Ord(\)" + shows "InfCard(\\<^bsub>\\<^esub>)" +proof - + have "\ (\\<^bsub>\\<^esub> \ \)" + proof (cases "\=0") + case True + then show ?thesis using mem_irrefl by auto + next + case False + with \Ord(\)\ + have "\ \ \\<^bsub>\\<^esub>" using Ord_0_lt[of \] ltD by (auto dest:Aleph_increasing) + then show ?thesis using foundation by blast + qed + with \Ord(\)\ + have "\ (|\\<^bsub>\\<^esub>| \ \)" + using Card_cardinal_eq by auto + then + have "\ Finite(\\<^bsub>\\<^esub>)" by auto + with \Ord(\)\ + show ?thesis + using Inf_Card_is_InfCard by simp +qed + +lemmas Limit_Aleph = InfCard_Aleph[THEN InfCard_is_Limit] + +lemmas Aleph_cont = Normal_imp_cont[OF Normal_Aleph] +lemmas Aleph_sup = Normal_Union[OF _ _ Normal_Aleph] + +bundle Ord_dests = Limit_is_Ord[dest] Card_is_Ord[dest] +bundle Aleph_dests = Aleph_cont[dest] Aleph_sup[dest] +bundle Aleph_intros = Aleph_increasing[intro!] +bundle Aleph_mem_dests = Aleph_increasing[OF ltI, THEN ltD, dest] + + +end \ No newline at end of file diff --git a/thys/Delta_System_Lemma/document/header-delta-system.tex b/thys/Delta_System_Lemma/document/header-delta-system.tex new file mode 100644 --- /dev/null +++ b/thys/Delta_System_Lemma/document/header-delta-system.tex @@ -0,0 +1,295 @@ +\usepackage[utf8]{inputenc} +\usepackage{amsmath} +\usepackage{amsfonts} +\usepackage{bbm} % Para el \bb{1} +\usepackage{multidef} +\usepackage{verbatim} +\usepackage{stmaryrd} %% para \llbracket +% \usepackage{hyperref} +\usepackage{xcolor} +\usepackage{framed} + +%% +%% \usepackage[bottom=2cm, top=2cm, left=2cm, right=2cm]{geometry} +%% \usepackage{titling} +%% \setlength{\droptitle}{-10ex} +%% +\renewcommand{\o}{\vee} +\renewcommand{\O}{\bigvee} +\newcommand{\y}{\wedge} +\newcommand{\Y}{\bigwedge} +\newcommand{\limp}{\longrightarrow} +\newcommand{\lsii}{\longleftrightarrow} +%% +%\newcommand{\DeclareMathOperator}[2]{\newcommand{#1}{\mathop{\mathrm{#2}}}} + +\DeclareMathOperator{\cf}{cf} +\DeclareMathOperator{\dom}{domain} +\DeclareMathOperator{\im}{img} +\DeclareMathOperator{\Fn}{Fn} +\DeclareMathOperator{\rk}{rk} +\DeclareMathOperator{\mos}{mos} +\DeclareMathOperator{\trcl}{trcl} +\DeclareMathOperator{\Con}{Con} +\DeclareMathOperator{\Club}{Club} + + +\newcommand{\modelo}[1]{\mathbf{#1}} +\newcommand{\axiomas}[1]{\mathit{#1}} +\newcommand{\clase}[1]{\mathsf{#1}} +\newcommand{\poset}[1]{\mathbb{#1}} +\newcommand{\operador}[1]{\mathbf{#1}} + +%% \newcommand{\Lim}{\clase{Lim}} +%% \newcommand{\Reg}{\clase{Reg}} +%% \newcommand{\Card}{\clase{Card}} +%% \newcommand{\On}{\clase{On}} +%% \newcommand{\WF}{\clase{WF}} +%% \newcommand{\HF}{\clase{HF}} +%% \newcommand{\HC}{\clase{HC}} +%% +%% El siguiente comando reemplaza todos los anteriores: +%% +\multidef{\clase{#1}}{Card,HC,HF,Lim,On->Ord,Reg,WF,Ord} +\newcommand{\ON}{\On} + +%% En lugar de usar todo el paquete bbm: +\DeclareMathAlphabet{\mathbbm}{U}{bbm}{m}{n} +\newcommand{\1}{\mathbbm{1}} +\newcommand{\PP}{\mathbbm{P}} + +%% +%% \newcommand{\calD}{\mathcal{D}} +%% \newcommand{\calS}{\mathcal{S}} +%% \newcommand{\calU}{\mathcal{U}} +%% \newcommand{\calB}{\mathcal{B}} +%% \newcommand{\calL}{\mathcal{L}} +%% \newcommand{\calF}{\mathcal{F}} +%% \newcommand{\calT}{\mathcal{T}} +%% \newcommand{\calW}{\mathcal{W}} +%% \newcommand{\calA}{\mathcal{A}} +%% +%% El siguiente comando reemplaza todos los anteriores: +%% +\multidef[prefix=cal]{\mathcal{#1}}{A-Z} +%% +%% \newcommand{\A}{\modelo{A}} +%% \newcommand{\BB}{\modelo{B}} +%% \newcommand{\ZZ}{\modelo{Z}} +%% \newcommand{\PP}{\modelo{P}} +%% \newcommand{\QQ}{\modelo{Q}} +%% \newcommand{\RR}{\modelo{R}} +%% +%% El siguiente comando reemplaza todos los anteriores: +%% +\multidef{\modelo{#1}}{A,BB->B,CC->C,NN->N,QQ->Q,RR->R,ZZ->Z} + +\multidef[prefix=p]{\mathbb{#1}}{A-Z} +%% \newcommand{\B}{\modelo{B}} +%% \newcommand{\C}{\modelo{C}} +%% \newcommand{\F}{\modelo{F}} +%% \newcommand{\D}{\modelo{D}} + +\newcommand{\Th}{\mb{Th}} +\newcommand{\Mod}{\mb{Mod}} + +\newcommand{\Se}{\operador{S^\prec}} +\newcommand{\Pu}{\operador{P_u}} +\renewcommand{\Pr}{\operador{P_R}} +\renewcommand{\H}{\operador{H}} +\renewcommand{\S}{\operador{S}} +\newcommand{\I}{\operador{I}} +\newcommand{\E}{\operador{E}} + +\newcommand{\se}{\preccurlyeq} +\newcommand{\ee}{\succ} +\newcommand{\id}{\approx} +\newcommand{\subm}{\subseteq} +\newcommand{\ext}{\supseteq} +\newcommand{\iso}{\cong} +%% +\renewcommand{\emptyset}{\varnothing} +\newcommand{\rel}{\mathcal{R}} +\newcommand{\Pow}{\mathop{\mathcal{P}}} +\renewcommand{\P}{\Pow} +\newcommand{\BP}{\mathrm{BP}} +\newcommand{\func}{\rightarrow} +\newcommand{\ord}{\mathrm{Ord}} +\newcommand{\R}{\mathbb{R}} +\newcommand{\N}{\mathbb{N}} +\newcommand{\Z}{\mathbb{Z}} +\renewcommand{\I}{\mathbb{I}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\B}{\mathbf{B}} +\newcommand{\lb}{\langle} +\newcommand{\rb}{\rangle} +\newcommand{\impl}{\rightarrow} +\newcommand{\ent}{\Rightarrow} +\newcommand{\tne}{\Leftarrow} +\newcommand{\sii}{\Leftrightarrow} +\renewcommand{\phi}{\varphi} +\newcommand{\phis}{{\varphi^*}} +\renewcommand{\th}{\theta} +\newcommand{\Lda}{\Lambda} +\newcommand{\La}{\Lambda} +\newcommand{\lda}{\lambda} +\newcommand{\ka}{\kappa} +\newcommand{\del}{\delta} +\newcommand{\de}{\delta} +\newcommand{\ze}{\zeta} +%\newcommand{\ }{\ } +\newcommand{\la}{\lambda} +\newcommand{\al}{\alpha} +\newcommand{\be}{\beta} +\newcommand{\ga}{\gamma} +\newcommand{\Ga}{\Gamma} +\newcommand{\ep}{\varepsilon} +\newcommand{\De}{\Delta} +\newcommand{\defi}{\mathrel{\mathop:}=} +\newcommand{\forces}{\Vdash} +%\newcommand{\ap}{\mathbin{\wideparen{\ }}} +\newcommand{\Tree}{{\mathrm{Tr}_\N}} +\newcommand{\PTree}{{\mathrm{PTr}_\N}} +\newcommand{\NWO}{\mathit{NWO}} +\newcommand{\Suc}{{\N^{<\N}}}% +\newcommand{\init}{\mathsf{i}} +\newcommand{\ap}{\mathord{^\smallfrown}} +\newcommand{\Cantor}{\mathcal{C}} +%\newcommand{\C}{\Cantor} +\newcommand{\Baire}{\mathcal{N}} +\newcommand{\sig}{\ensuremath{\sigma}} +\newcommand{\fsig}{\ensuremath{F_\sigma}} +\newcommand{\gdel}{\ensuremath{G_\delta}} +\newcommand{\Sig}{\ensuremath{\boldsymbol{\Sigma}}} +\newcommand{\bPi}{\ensuremath{\boldsymbol{\Pi}}} +\newcommand{\Del}{\ensuremath{\boldsymbol\Delta}} +%\renewcommand{\F}{\operador{F}} +\newcommand{\ths}{{\theta^*}} +\newcommand{\om}{\ensuremath{\omega}} +%\renewcommand{\c}{\complement} +\newcommand{\comp}{\mathsf{c}} +\newcommand{\co}[1]{\left(#1\right)^\comp} +\newcommand{\len}[1]{\left|#1\right|} +\DeclareMathOperator{\tlim}{\overline{\mathrm{TLim}}} +\newcommand{\card}[1]{{\left|#1\right|}} +\newcommand{\bigcard}[1]{{\bigl|#1\bigr|}} +% +% Cardinality +% +\newcommand{\lec}{\leqslant_c} +\newcommand{\gec}{\geqslant_c} +\newcommand{\lc}{<_c} +\newcommand{\gc}{>_c} +\newcommand{\eqc}{=_c} +\newcommand{\biy}{\approx} +\newcommand*{\ale}[1]{\aleph_{#1}} +% +\newcommand{\Zerm}{\axiomas{Z}} +\newcommand{\ZC}{\axiomas{ZC}} +\newcommand{\AC}{\axiomas{AC}} +\newcommand{\DC}{\axiomas{DC}} +\newcommand{\MA}{\axiomas{MA}} +\newcommand{\CH}{\axiomas{CH}} +\newcommand{\ZFC}{\axiomas{ZFC}} +\newcommand{\ZF}{\axiomas{ZF}} +\newcommand{\Inf}{\axiomas{Inf}} +% +% Cardinal characteristics +% +\newcommand{\cont}{\mathfrak{c}} +\newcommand{\spl}{\mathfrak{s}} +\newcommand{\bound}{\mathfrak{b}} +\newcommand{\mad}{\mathfrak{a}} +\newcommand{\tower}{\mathfrak{t}} +% +\renewcommand{\hom}[2]{{}^{#1}\hskip-0.116ex{#2}} +\newcommand{\pred}[1][{}]{\mathop{\mathrm{pred}_{#1}}} +%% Postfix operator with supressable space: +%% \newcommand*{\iseg}{\relax\ifnum\lastnodetype>0 \mskip\medmuskip\fi{\downarrow}} % +\newcommand*{\iseg}{{\downarrow}} +\newcommand{\rr}{\mathrel{R}} +\newcommand{\restr}{\upharpoonright} +%\newcommand{\type}{\mathtt{}} +\newcommand{\app}{\mathop{\mathrm{Aprox}}} +\newcommand{\hess}{\triangleleft} +\newcommand{\bx}{\bar{x}} +\newcommand{\by}{\bar{y}} +\newcommand{\bz}{\bar{z}} +\newcommand{\union}{\mathop{\textstyle\bigcup}} +\newcommand{\sm}{\setminus} +\newcommand{\sbq}{\subseteq} +\newcommand{\nsbq}{\subseteq} +\newcommand{\mty}{\emptyset} +\newcommand{\dimg}{\text{\textup{``}}} % direct image +\newcommand{\quine}[1]{\ulcorner{\!#1\!}\urcorner} +%\newcommand{\ntrm}[1]{\textsl{\textbf{#1}}} +\newcommand{\Null}{\calN\!\mathit{ull}} +\DeclareMathOperator{\club}{Club} +\DeclareMathOperator{\otp}{otp} +\DeclareMathOperator{\val}{\mathit{val}} +\DeclareMathOperator{\chk}{\mathit{check}} +\DeclareMathOperator{\edrel}{\mathit{edrel}} +\DeclareMathOperator{\eclose}{\mathit{eclose}} +\DeclareMathOperator{\Memrel}{\mathit{Memrel}} +\renewcommand{\PP}{\mathbb{P}} +\renewcommand{\app}{\mathrm{App}} +\newcommand{\formula}{\isatt{formula}} +\newcommand{\tyi}{\isatt{i}} +\newcommand{\tyo}{\isatt{o}} +\newcommand{\forceisa}{\mathop{\mathtt{forces}}} +\newcommand{\equ}{\mathbf{e}} +\newcommand{\bel}{\mathbf{b}} +\newcommand{\atr}{\mathit{atr}} +\newcommand{\concat}{\mathbin{@}} +\newcommand{\dB}[1]{\mathbf{#1}} +\newcommand{\ed}{\mathrel{\isatt{ed}}} +\newcommand{\frecR}{\mathrel{\isatt{frecR}}} +\newcommand{\forceseq}{\mathop{\isatt{forces{\isacharunderscore}eq}}} +\newcommand{\forcesmem}{\mathop{\isatt{forces{\isacharunderscore}mem}}} +\newcommand{\forcesat}{\mathop{\isatt{forces{\isacharunderscore}at}}} +\newcommand{\pleq}{\preceq} + + +%%%%%%%%%%%%%%%%%%%%%%%%% +% Variant aleph, beth, etc +% From http://tex.stackexchange.com/q/170476/69595 +\makeatletter +\@ifpackageloaded{txfonts}\@tempswafalse\@tempswatrue +\if@tempswa + \DeclareFontFamily{U}{txsymbols}{} + \DeclareFontFamily{U}{txAMSb}{} + \DeclareSymbolFont{txsymbols}{OMS}{txsy}{m}{n} + \SetSymbolFont{txsymbols}{bold}{OMS}{txsy}{bx}{n} + \DeclareFontSubstitution{OMS}{txsy}{m}{n} + \DeclareSymbolFont{txAMSb}{U}{txsyb}{m}{n} + \SetSymbolFont{txAMSb}{bold}{U}{txsyb}{bx}{n} + \DeclareFontSubstitution{U}{txsyb}{m}{n} + \DeclareMathSymbol{\aleph}{\mathord}{txsymbols}{64} + \DeclareMathSymbol{\beth}{\mathord}{txAMSb}{105} + \DeclareMathSymbol{\gimel}{\mathord}{txAMSb}{106} + \DeclareMathSymbol{\daleth}{\mathord}{txAMSb}{107} +\fi +\makeatother + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Theorem Environments +%% +% \newtheorem{theorem}{Theorem} +% \newtheorem{lemma}[theorem]{Lemma} +% \newtheorem{prop}[theorem]{Proposition} +% \newtheorem{corollary}[theorem]{Corollary} +% \newtheorem{claim}{Claim} +% \newtheorem*{claim*}{Claim} +% \theoremstyle{definition} +% \newtheorem{definition}[theorem]{Definition} +% \newtheorem{remark}[theorem]{Remark} +% \newtheorem{example}[theorem]{Example} +% \theoremstyle{remark} +% \newtheorem*{remark*}{Remark} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \newenvironment{inducc}{\begin{list}{}{\itemindent=2.5em \labelwidth=4em}}{\end{list}} +%% \newcommand{\caso}[1]{\item[\fbox{#1}]} +\newenvironment{proofofclaim}{\begin{proof}[Proof of Claim]}{\end{proof}} diff --git a/thys/Delta_System_Lemma/document/multidef.sty b/thys/Delta_System_Lemma/document/multidef.sty new file mode 100644 --- /dev/null +++ b/thys/Delta_System_Lemma/document/multidef.sty @@ -0,0 +1,133 @@ +%% +%% This is file `multidef.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% multidef.dtx (with options: `package') +%% +%% (c) 2016/03/14 Nicolas Markey +%% +%% This work may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License, either version 1.3 of this license +%% or (at your option) any later version. The latest version of this +%% license is in +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of LaTeX version +%% 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% The Current Maintainer of this work is Nicolas Markey. +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\RequirePackage{xkeyval} +\define@boolkeys{mdef}{noerr,nowarn}[true] +\DeclareOptionX{noerr}[true]{\setkeys{mdef}{noerr=#1}} +\DeclareOptionX{nowarn}[true]{\setkeys{mdef}{nowarn=#1}} +\ExecuteOptionsX{noerr=false,nowarn=false} +\ProcessOptionsX +\ifKV@mdef@noerr +\presetkeys{mdef}{noerr=true}{} +\else +\presetkeys{mdef}{noerr=false}{} +\fi +\ifKV@mdef@nowarn +\presetkeys{mdef}{nowarn=true}{} +\else +\presetkeys{mdef}{nowarn=false}{} +\fi +\define@key{mdef}{prefix}{\def\@mdprefix{#1}} +\define@key{mdef}{p}{\def\@mdprefix{#1}} +\define@key{mdef}{suffix}{\def\@mdsuffix{#1}} +\define@key{mdef}{s}{\def\@mdsuffix{#1}} +\define@key{mdef}{arg}{\def\@mdargs{#1}} +\define@key{mdef}{args}{\def\@mdargs{#1}} +\define@boolkeys{mdef}{long,global}[true] +\presetkeys{mdef} + {p=,s=,prefix=,suffix=,long=false,global=false,arg=0,args=0}{} +\def\@mdef@az{a-z} +\def\@mdef@AZ{A-Z} +\def\@mdef@alphabet{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z} +\def\@mdef@Alphabet{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z} +\newcommand\multidef[3][]{% + \setkeys{mdef}{#1}% + \def\@mdef@com##1{#2}% + \@mdef#3,\@end} +\def\@mdef #1,#2\@end{\expandafter\def\expandafter\@arg + \expandafter{\romannumeral-\expandafter`\expandafter\.#1}% + \ifx\@arg\@mdef@az + \expandafter\@mdef \@mdef@alphabet,\@end + \else + \ifx\@arg\@mdef@AZ + \expandafter\@mdef \@mdef@Alphabet,\@end + \else + \expandafter\@@mdef\@arg->->->\@end + \fi + \fi + \def\@arg{#2}% + \ifx\@arg\@empty\else\@mdef #2\@end\fi} +\newtoks\@mdef@redeftok +\def\@mdef@comma{} +\def\@@mdef#1->#2->#3\@end{% + \@ifundefined{\@mdprefix#1\@mdsuffix} + {\@@@mdef{#1}{#2}} + {\edef\@mdef@redef{\the\@mdef@redeftok\@mdef@comma + \@backslashchar\@mdprefix#1\@mdsuffix} + \def\@mdef@comma{, } + \@mdef@redeftok=\expandafter{\@mdef@redef} + \ifKV@mdef@noerr + \@@@mdef{#1}{#2}% + \ifKV@mdef@nowarn\else + \PackageWarning{multidef} + {command \expandafter\noexpand\csname\@mdprefix#1\@mdsuffix\endcsname + redefined} + \fi + \else + \PackageError{multidef} + {command \expandafter\noexpand\csname\@mdprefix#1\@mdsuffix\endcsname + already defined}\@ehc + \fi + \ifKV@mdef@nowarn\else + \@ifundefined{@mdwarnonce} + {\def\@mdwarnonce{}% + \@mdef@finalwarn} + {} + \fi} +} +\def\@mdef@finalwarn{% + \AtEndDocument{\PackageWarningNoLine{multidef}{There were + redefined commands (\the\@mdef@redeftok)}}} +\def\@@@mdef#1#2{\def\@arg@{#2}% + \ifx\@arg@\@empty + \@mdef@def{#1}{#1}% + \else + \@mdef@def{#1}{#2}% + \fi} +\def\@mdef@def#1#2{% + \let\reserved@b\@gobble + \ifKV@mdef@global\let\@mdglobal\global\else\let\@mdglobal\relax\fi + \ifKV@mdef@long\let\@mdlong\long\else\let\@mdlong\relax\fi + \def\l@ngrel@x{\@mdlong\@mdglobal} + \expandafter\expandafter\expandafter\@yargd@f\expandafter\@mdargs\csname + \@mdprefix#1\@mdsuffix\expandafter\endcsname\expandafter{\@mdef@com{#2}} +} +%% +%% +%% End of file `multidef.sty'. diff --git a/thys/Delta_System_Lemma/document/root.bib b/thys/Delta_System_Lemma/document/root.bib new file mode 100644 --- /dev/null +++ b/thys/Delta_System_Lemma/document/root.bib @@ -0,0 +1,81 @@ +@article{DBLP:journals/jar/PaulsonG96, + author = {Lawrence C. Paulson and + Krzysztof Grabczewski}, + title = {Mechanizing Set Theory}, + journal = {J. Autom. Reasoning}, + volume = {17}, + number = {3}, + pages = {291--323}, + year = {1996}, + xurl = {https://doi.org/10.1007/BF00283132}, + doi = {10.1007/BF00283132}, + timestamp = {Sat, 20 May 2017 00:22:31 +0200}, + biburl = {https://dblp.org/rec/bib/journals/jar/PaulsonG96}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} + +@inproceedings{2020arXiv200109715G, + author = {Gunther, Emmanuel and Pagano, Miguel and S{\'a}nchez Terraf, Pedro}, + title = "{Formalization of Forcing in Isabelle/ZF}", + isbn = {978-3-662-45488-6}, + booktitle = {Automated Reasoning. 10th International Joint Conference, IJCAR 2020, Paris, France, July 1--4, 2020, Proceedings, Part II}, + volume = 12167, + series = {Lecture Notes in Artificial Intelligence}, + editor = {Peltier, Nicolas and Sofronie-Stokkermans, Viorica}, + publisher = {Springer International Publishing}, + doi = {10.1007/978-3-030-51054-1}, + pages = {221--235}, + keywords = {Computer Science - Logic in Computer Science, Mathematics - Logic, 03B35 (Primary) 03E40, 03B70, 68T15 (Secondary), F.4.1}, + year = 2020, + eid = {arXiv:2001.09715}, +archivePrefix = {arXiv}, + eprint = {2001.09715}, + primaryClass = {cs.LO}, + adsurl = {https://ui.adsabs.harvard.edu/abs/2020arXiv200109715G}, + abstract = {We formalize the theory of forcing in the set theory framework of +Isabelle/ZF. Under the assumption of the existence of a countable +transitive model of $\mathit{ZFC}$, we construct a proper generic extension and show +that the latter also satisfies $\mathit{ZFC}$. In doing so, we remodularized +Paulson's ZF-Constructibility library.}, + adsnote = {Provided by the SAO/NASA Astrophysics Data System} +} + +@Book{Jech_Millennium, + author = "Thomas Jech", + title = "Set Theory. The Millennium Edition", + series = "Springer Monographs in Mathematics", + publisher = "Springer-Verlag", + edition = "Third", + year = "2002", + note = {Corrected fourth printing, 2006} +} + +@misc{apunte_st, + author = {S{\'a}nchez Terraf, Pedro}, + title = "Course notes on set theory", + howpublished = {online}, + year = 2019, + note = "In Spanish", + url = {https://cs.famaf.unc.edu.ar/~pedro/home_en.html#set_theory} +} + +@book{kunen2011set, + title={Set Theory}, + author={Kunen, K.}, + edition = {Second}, + isbn=9781848900509, + series={Studies in Logic}, + url={https://books.google.com.ar/books?id=Zn8ppwAACAAJ}, + year=2011, + publisher={College Publications}, + note = {Revised edition, 2013} +} + +@Book{JW, + author = "Winfried Just and Martin Weese", + title = "Discovering Modern Set Theory. II", + series = "Grad. Studies in Mathematics", + volume = "18", + publisher = "American Mathematical Society", + year = "1997" +} diff --git a/thys/Delta_System_Lemma/document/root.bst b/thys/Delta_System_Lemma/document/root.bst new file mode 100644 --- /dev/null +++ b/thys/Delta_System_Lemma/document/root.bst @@ -0,0 +1,1561 @@ +%% +%% by pedro +%% Based on file `model1b-num-names.bst' +%% +%% +%% +ENTRY + { address + archive + author + booktitle + chapter + doi + edition + editor + eid + eprint + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + url + volume + year + zbl + } + {} + { label extra.label sort.label short.list } +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} +STRINGS { s t} +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + +FUNCTION {date.block} +{ + skip$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\textit{" swap$ * "}" * } + if$ +} +%% by pedro +FUNCTION {slanted} +{ duplicate$ empty$ + { pop$ "" } + { "\textsl{" swap$ * "}" * } + if$ +} +FUNCTION {smallcaps} +{ duplicate$ empty$ + { pop$ "" } + { "\textsc{" swap$ * "}" * } + if$ +} +FUNCTION {bold} +{ duplicate$ empty$ + { pop$ "" } + { "\textbf{" swap$ * "}" * } + if$ +} + + +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {capitalize} +{ "u" change.case$ "t" change.case$ } + +FUNCTION {space.word} +{ " " swap$ * " " * } + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. + % The language selected here is ENGLISH +FUNCTION {bbl.and} +{ "and"} + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.editors} +{ "eds." } + +FUNCTION {bbl.editor} +{ "ed." } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +{ "edition" } + +FUNCTION {bbl.volume} +{ "volume" } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +{ "number" } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +{ "pp." } + +FUNCTION {bbl.page} +{ "p." } + +FUNCTION {bbl.chapter} +{ "chapter" } + +FUNCTION {bbl.techrep} +{ "Technical Report" } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +FUNCTION {bbl.first} +{ "1st" } + +FUNCTION {bbl.second} +{ "2nd" } + +FUNCTION {bbl.third} +{ "3rd" } + +FUNCTION {bbl.fourth} +{ "4th" } + +FUNCTION {bbl.fifth} +{ "5th" } + +FUNCTION {bbl.th} +{ "th" } + +FUNCTION {bbl.st} +{ "st" } + +FUNCTION {bbl.nd} +{ "nd" } + +FUNCTION {bbl.rd} +{ "rd" } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bbl.st * } + { duplicate$ "2" = + { pop$ bbl.nd * } + { "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +MACRO {acmcs} {"ACM Comput. Surv."} + +MACRO {acta} {"Acta Inf."} + +MACRO {cacm} {"Commun. ACM"} + +MACRO {ibmjrd} {"IBM J. Res. Dev."} + +MACRO {ibmsj} {"IBM Syst.~J."} + +MACRO {ieeese} {"IEEE Trans. Software Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput. Aid. Des."} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Program."} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Graphic."} + +MACRO {toms} {"ACM Trans. Math. Software"} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} + +MACRO {tcs} {"Theor. Comput. Sci."} + +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { + pop$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ pop$ + } + { swap$ + "\bibinfo{" swap$ * "}{" * swap$ * "}" * + } + if$ + } + if$ +} +FUNCTION {bibinfo.warn} +{ swap$ + duplicate$ missing$ + { + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ "empty " swap$ * " in " * cite$ * warning$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +FUNCTION {format.zbl} +{ zbl empty$ + { "" } +% { "\urlprefix\url{" url * "}" * } + { "\zbl{" zbl * "}" * } % changed in titto-lncs-02.bst + if$ +} +FUNCTION {format.url} +{ url empty$ + { "" } +% { "\urlprefix\url{" url * "}" * } + { "\url{" url * "}" * } % changed in titto-lncs-02.bst + if$ +} + +FUNCTION {format.doi} % added in splncs04.bst +{ doi empty$ + { "" } + { after.block 'output.state := + "\doi{" doi * "}" * } + if$ +} + +FUNCTION {format.eprint} +{ eprint duplicate$ empty$ + 'skip$ + { "\eprint" + archive empty$ + 'skip$ + { "[" * archive * "]" * } + if$ + "{" * swap$ * "}" * + } + if$ +} + +STRINGS { bibinfo} +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{f{.}.~}{vv~}{ll}{, jj}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + "," * + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal * + } + { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.names.ed} +{ + format.names +} +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author "author" format.names smallcaps +} +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { + " " * + get.bbl.editor + capitalize + "(" swap$ * ")" * + * + } + if$ +} +FUNCTION {format.note} +{ + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { output.state mid.sentence = + { "l" } + { "u" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + } + if$ +} + +FUNCTION {format.title} +{ title + duplicate$ empty$ 'skip$ + { "t" change.case$ } + if$ + "title" bibinfo.check +} +FUNCTION {format.full.names} +{'s := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal * + } + { + bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.key.full} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.key.full} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {editor.key.full} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.full + { type$ "proceedings" = + 'editor.key.full + 'author.key.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[{" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "}]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {n.dashify} +{ + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {word.in} +{ bbl.in + ":" * + " " * } + +FUNCTION {format.date} +{ year "year" bibinfo.check duplicate$ empty$ + { + "empty year in " cite$ * "; set to ????" * warning$ + pop$ "????" + } + 'skip$ + if$ + % extra.label * + %% by pedro + " (" swap$ * ")" * +} +FUNCTION{format.year} +{ year "year" bibinfo.check duplicate$ empty$ + { "empty year in " cite$ * + "; set to ????" * + warning$ + pop$ "????" + } + { + } + if$ + % extra.label * + " (" swap$ * ")" * +} +FUNCTION {format.btitle} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { + } + if$ + %% by pedro + "``" swap$ * "''" * +} +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + %% by pedro + { series "series" bibinfo.check + duplicate$ empty$ 'pop$ + { %slanted + } + if$ + "volume and number" number either.or.check + volume tie.or.space.prefix + "volume" bibinfo.check + bold + * * + } + if$ +} +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { series empty$ + { number "number" bibinfo.check } + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.prefix "number" bibinfo.check * * + bbl.in space.word * + series "series" bibinfo.check * + } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { + output.state mid.sentence = + { "l" } + { "t" } + if$ change.case$ + "edition" bibinfo.check + " " * bbl.edition * + } + if$ +} + +INTEGERS { multiresult } +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { duplicate$ multi.page.check + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + } + if$ +} + +FUNCTION {format.pages.simple} +{ pages duplicate$ empty$ 'skip$ + { duplicate$ multi.page.check + { +% bbl.pages swap$ + n.dashify + } + { +% bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * + } + if$ +} +FUNCTION {format.journal.pages} +{ pages duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ + { pop$ pop$ format.pages } + { + ": " * + swap$ + n.dashify + "pages" bibinfo.check + * + } + if$ + } + if$ +} +FUNCTION {format.vol.num.pages} +{ volume field.or.null + duplicate$ empty$ 'skip$ + { + "volume" bibinfo.check + } + if$ + %% by pedro + bold + pages duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ + { pop$ pop$ format.pages } + { + ": " * + swap$ + n.dashify + "pages" bibinfo.check + * + } + if$ + } + if$ + format.year * +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + { "" } + { type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + } + if$ +} + +FUNCTION {format.booktitle} +{ + booktitle "booktitle" bibinfo.check +} +FUNCTION {format.in.ed.booktitle} +{ format.booktitle duplicate$ empty$ 'skip$ + { + editor "editor" format.names.ed duplicate$ empty$ 'pop$ + { + " " * + get.bbl.editor + capitalize + "(" swap$ * "), " * + * swap$ + * } + if$ + word.in swap$ * + } + if$ +} +FUNCTION {format.thesis.type} +{ type duplicate$ empty$ + 'pop$ + { swap$ pop$ + "t" change.case$ "type" bibinfo.check + } + if$ +} +FUNCTION {format.tr.number} +{ number "number" bibinfo.check + type duplicate$ empty$ + { pop$ bbl.techrep } + 'skip$ + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ "t" change.case$ } + { tie.or.space.prefix * * } + if$ +} +FUNCTION {format.article.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} +FUNCTION {format.book.crossref} +{ volume duplicate$ empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + pop$ word.in + } + { bbl.volume + swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * + } + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.incoll.inproc.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} +FUNCTION {format.org.or.pub} +{ 't := + "" + address empty$ t empty$ and + 'skip$ + { + t empty$ + { address "address" bibinfo.check * + } + { t * + address empty$ + 'skip$ + { ", " * address "address" bibinfo.check * } + if$ + } + if$ + } + if$ +} +FUNCTION {format.publisher.address} +{ publisher "publisher" bibinfo.check format.org.or.pub +} +FUNCTION {format.publisher.address.year} +{ publisher "publisher" bibinfo.check format.org.or.pub + format.journal.pages + format.year * +} + +FUNCTION {school.address.year} +{ school "school" bibinfo.warn + address empty$ + 'skip$ + { ", " * address "address" bibinfo.check * } + if$ + format.year * +} + +FUNCTION {format.publisher.address.pages} +{ publisher "publisher" bibinfo.check format.org.or.pub + format.year * + +} + +FUNCTION {format.organization.address} +{ organization "organization" bibinfo.check format.org.or.pub +} + +FUNCTION {format.organization.address.year} +{ organization "organization" bibinfo.check format.org.or.pub + format.journal.pages + format.year * +} + +FUNCTION {article} +{ "%Type = Article" write$ + output.bibitem + format.authors "author" output.check + author format.key output + format.title "title" output.check + crossref missing$ + { + journal + "journal" bibinfo.check + %% by pedro + emphasize + "journal" output.check + add.blank + format.vol.num.pages output + } + { format.article.crossref output.nonnull + } + if$ +% format.journal.pages + new.sentence + format.note output + format.doi output + fin.entry +} +FUNCTION {book} +{ "%Type = Book" write$ + output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.btitle "title" output.check + crossref missing$ + { %% by pedro + format.bvolume output + format.number.series output + % format.bvolume output + format.publisher.address.year output + } + { + format.book.crossref output.nonnull + } + if$ + format.edition output + % format.date "year" output.check + new.sentence + format.note output + format.doi output + format.eprint output + fin.entry +} +FUNCTION {booklet} +{ "%Type = Booklet" write$ + output.bibitem + format.authors output + author format.key output + format.title "title" output.check + howpublished "howpublished" bibinfo.check output + address "address" bibinfo.check output + format.date "year" output.check + new.sentence + format.note output + format.doi output + format.eprint output + fin.entry +} + +FUNCTION {inbook} +{ "%Type = Inbook" write$ + output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + format.title "title" output.check + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.btitle "title" output.check + crossref missing$ + { + format.bvolume output + format.number.series output + format.publisher.address output + format.pages "pages" output.check + format.edition output + format.date "year" output.check + } + { + format.book.crossref output.nonnull + } + if$ +% format.edition output +% format.pages "pages" output.check + new.sentence + format.note output + format.doi output + fin.entry +} + +FUNCTION {incollection} +{ "%Type = Incollection" write$ + output.bibitem + format.authors "author" output.check + author format.key output + format.title "title" output.check + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages "pages" output.check + % format.publisher.address output + % format.date "year" output.check + format.publisher.address.year output + format.edition output + } + { format.incoll.inproc.crossref output.nonnull + } + if$ +% format.pages "pages" output.check + new.sentence + format.note output + format.doi output + fin.entry +} +FUNCTION {inproceedings} +{ "%Type = Inproceedings" write$ + output.bibitem + format.authors "author" output.check + author format.key output + format.title "title" output.check + crossref missing$ + { + journal + "journal" bibinfo.check + "journal" output.check + format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + publisher empty$ + { %format.organization.address output + format.organization.address.year output +% format.journal.pages + } + { organization "organization" bibinfo.check output + format.publisher.address.year output + % format.date "year" output.check +% format.journal.pages + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.journal.pages + } + if$ +% format.pages.simple "pages" output.check +%%% La que sigue la muevo adentro del "if" +% format.journal.pages + new.sentence + format.note output + format.doi output + fin.entry +} +FUNCTION {conference} { inproceedings } +FUNCTION {manual} +{ "%Type = Manual" write$ + output.bibitem + format.authors output + author format.key output + format.btitle "title" output.check + organization "organization" bibinfo.check output + address "address" bibinfo.check output + format.edition output + format.date "year" output.check + new.sentence + format.note output + format.doi output + format.eprint output + fin.entry +} + +FUNCTION {mastersthesis} +{ "%Type = Masterthesis" write$ + output.bibitem + format.authors "author" output.check + author format.key output + format.btitle + "title" output.check + bbl.mthesis format.thesis.type output.nonnull +% school "school" bibinfo.warn output +% address "address" bibinfo.check output +% format.date "year" output.check + school.address.year output + new.sentence + format.note output + format.doi output + format.eprint output + fin.entry +} + +FUNCTION {misc} +{ "%Type = Misc" write$ + output.bibitem + format.authors output + author format.key output + format.title output + howpublished "howpublished" bibinfo.check output + format.date "year" output.check + new.sentence + format.note output + format.url output + format.doi output + format.eprint output + new.block + fin.entry +} +FUNCTION {phdthesis} +{ "%Type = Phdthesis" write$ + output.bibitem + format.authors "author" output.check + author format.key output + format.btitle + "title" output.check + bbl.phdthesis format.thesis.type output.nonnull +% school "school" bibinfo.warn output +% address "address" bibinfo.check output +% format.date "year" output.check + school.address.year output + new.sentence + format.note output + format.doi output + format.eprint output + fin.entry +} + +FUNCTION {proceedings} +{ "%Type = Proceedings" write$ + output.bibitem + format.editors output + editor format.key output + format.btitle "title" output.check + format.bvolume output + format.number.series output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + format.date "year" output.check + new.sentence + format.note output + format.doi output + fin.entry +} + +FUNCTION {techreport} +{ "%Type = Techreport" write$ + output.bibitem + format.authors "author" output.check + author format.key output + format.btitle + "title" output.check + format.tr.number output.nonnull + institution "institution" bibinfo.warn output + address "address" bibinfo.check output + format.date "year" output.check + new.sentence + format.note output + format.url output + format.doi output + format.eprint output + fin.entry +} + +FUNCTION {unpublished} +{ "%Type = Unpublished" write$ + output.bibitem + format.authors "author" output.check + author format.key output + format.title "title" output.check + format.date "year" output.check + new.sentence + format.note "note" output.check + format.url output + format.doi output + format.eprint output + fin.entry +} + +FUNCTION {default.type} { misc } +READ +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} +INTEGERS { len } +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} +FUNCTION {format.lab.names} +{ 's := + "" 't := + s #1 "{vv~}{ll}" format.name$ + s num.names$ duplicate$ + #2 > + { pop$ + " " * bbl.etal * + } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + " " * bbl.etal * + } + { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ + * } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + year duplicate$ empty$ + { pop$ "????" } + { purify$ #-1 #4 substring$ } + if$ + * + 'label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{ll{ }}{ f{ }}{ jj{ }}" + format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { t sortify * } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {editor.sort} +{ editor empty$ + { key empty$ + { "to sort, need editor or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ +} +FUNCTION {presort} +{ calc.label + label sortify + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + 'author.sort + if$ + } + if$ + #1 entry.max$ substring$ + 'sort.label := + sort.label + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} +SORT +STRINGS { last.label next.extra } +INTEGERS { last.extra.num number.label } +FUNCTION {initialize.extra.label.stuff} +{ #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'last.extra.num := + #0 'number.label := +} +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} +EXECUTE {initialize.extra.label.stuff} +ITERATE {forward.pass} +REVERSE {reverse.pass} +FUNCTION {bib.sort.order} +{ sort.label + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} +ITERATE {bib.sort.order} +SORT +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{small}\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi" + write$ newline$ + "\providecommand{\bibinfo}[2]{#2}" + write$ newline$ + "\providecommand{\doi}[1]{doi:\href{https://doi.org/#1}{#1}}" + write$ newline$ + "\providecommand{\eprint}[2][]{arXiv:\href{https://arxiv.org/abs/#2}{#2}}" + write$ newline$ + "\providecommand{\zbl}[1]{\hfill {\small Zbl~\href{https://zbmath.org/?q=an\%3A#1}{#1}}}" + write$ newline$ + "\ifx\xfnm\relax \def\xfnm[#1]{\unskip,\space#1}\fi" + write$ newline$ +} +EXECUTE {begin.bib} +EXECUTE {init.state.consts} +ITERATE {call.type$} +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}\end{small}" write$ newline$ +} +EXECUTE {end.bib} diff --git a/thys/Delta_System_Lemma/document/root.tex b/thys/Delta_System_Lemma/document/root.tex new file mode 100644 --- /dev/null +++ b/thys/Delta_System_Lemma/document/root.tex @@ -0,0 +1,119 @@ +\documentclass[11pt,a4paper]{article} +\usepackage{isabelle,isabellesym} +\usepackage[numbers]{natbib} + +\usepackage{relsize} +\DeclareRobustCommand{\isactrlbsub}{\emph\bgroup\math{}\sb\bgroup\mbox\bgroup\isaspacing\itshape\smaller} +\DeclareRobustCommand{\isactrlesub}{\egroup\egroup\endmath\egroup} +\DeclareRobustCommand{\isactrlbsup}{\emph\bgroup\math{}\sp\bgroup\mbox\bgroup\isaspacing\itshape\smaller} +\DeclareRobustCommand{\isactrlesup}{\egroup\egroup\endmath\egroup} + +% further packages required for unusual symbols (see also +% isabellesym.sty), use only when needed + +\usepackage{amssymb} + %for \, \, \, \, \, \, + %\, \, \, \, \, + %\, \, \ + +%\usepackage{eurosym} + %for \ + +%\usepackage[only,bigsqcap]{stmaryrd} + %for \ + +%\usepackage{eufrak} + %for \ ... \, \ ... \ (also included in amssymb) + +%\usepackage{textcomp} + %for \, \, \, \, \, + %\ + +\input{header-delta-system} + +% this should be the last package used +\usepackage{pdfsetup} + +% urls in roman style, theory text in math-similar italics +\urlstyle{tt} +\isabellestyle{it} + +% for uniform font size +%\renewcommand{\isastyle}{\isastyleminor} + +\renewcommand{\isacharunderscorekeyword}{\mbox{\_}} +\renewcommand{\isacharunderscore}{\mbox{\_}} +\renewcommand{\isasymtturnstile}{\isamath{\Vdash}} +\renewcommand{\isacharminus}{-} + +\begin{document} + +\title{Cofinality and the Delta System Lemma} +\author{ + Pedro S\'anchez Terraf\thanks{Universidad Nacional de C\'ordoba. + Facultad de Matem\'atica, Astronom\'{\i}a, F\'{\i}sica y + Computaci\'on.} + \thanks{% + Centro de Investigaci\'on y Estudios de Matem\'atica + (CIEM-FaMAF), Conicet. C\'ordoba. Argentina. + Supported by Secyt-UNC project 33620180100465CB.} +} +\maketitle + +\begin{abstract} + We formalize the basic results on cofinality of linearly ordered + sets and ordinals and \v{S}anin's Lemma for uncountable families of + finite sets. We work in the set theory framework of + Isabelle/ZF, using the Axiom of Choice as needed. +\end{abstract} + + +\tableofcontents + +% sane default for proof documents +\parindent 0pt\parskip 0.5ex + +\section{Introduction} + +The session we present gathers very basic results built on the set +theory formalization of Isabelle/ZF +\cite{DBLP:journals/jar/PaulsonG96}. In a sense, some of the material +formalized here corresponds to a natural continuation of that +work. This is even clearer after perusing Section~\ref{sec:zf-lib}, +where notions like cardinal exponentiation are first defined, together +with various lemmas that do not depend on the Axiom of Choice ($\AC$); +the same holds for the basic theory of cofinality of ordinals, which +is developed in Section~\ref{sec:cofinality}. In +Section~\ref{sec:cardinal-lib}, (un)countability is defined +and several results proved, now using $\AC$ freely; the latter is also +needed to prove König's Theorem on cofinality of cardinal +exponentiation. The simplest infinitary version of the Delta +System Lemma (DSL, also known as the ``Sunflower Lemma'') due to \v{S}anin +is proved in Section~\ref{sec:dsl}, and it is applied to prove +that Cohen posets satisfy the \emph{countable chain condition}. + +A greater part of this development was motivated by an ongoing joint +project on the formalization of the ctm approach to +forcing~\cite{2020arXiv200109715G} by Gunther, Pagano, Steinberg, and +the author. Indeed, most of the results presented here are required +for the development of forcing. As it turns out, the material as +formalized presently will not be part of the forcing formalization, +since for that goal we need relativized versions of both the concepts +and the proofs. + +A cross-linked HTML version of the development can be found at +\url{https://cs.famaf.unc.edu.ar/~pedro/Delta_System_Lemma/html}. + +% generated text of all theories +\input{session} + +% optional bibliography +\bibliographystyle{root} +\bibliography{root} + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/thys/ROOTS b/thys/ROOTS --- a/thys/ROOTS +++ b/thys/ROOTS @@ -1,576 +1,579 @@ ADS_Functor AI_Planning_Languages_Semantics AODV AVL-Trees AWN Abortable_Linearizable_Modules Abs_Int_ITP2012 Abstract-Hoare-Logics Abstract-Rewriting Abstract_Completeness Abstract_Soundness Adaptive_State_Counting Affine_Arithmetic Aggregation_Algebras Akra_Bazzi Algebraic_Numbers Algebraic_VCs Allen_Calculus Amicable_Numbers Amortized_Complexity AnselmGod Applicative_Lifting Approximation_Algorithms Architectural_Design_Patterns Aristotles_Assertoric_Syllogistic Arith_Prog_Rel_Primes ArrowImpossibilityGS Attack_Trees Auto2_HOL Auto2_Imperative_HOL AutoFocus-Stream Automated_Stateful_Protocol_Verification Automatic_Refinement AxiomaticCategoryTheory BDD BNF_CC BNF_Operations Banach_Steinhaus Bell_Numbers_Spivey Berlekamp_Zassenhaus Bernoulli Bertrands_Postulate Bicategory BinarySearchTree Binding_Syntax_Theory Binomial-Heaps Binomial-Queues BirdKMP Bondy Boolean_Expression_Checkers Bounded_Deducibility_Security Buchi_Complementation Budan_Fourier Buffons_Needle Buildings BytecodeLogicJmlTypes C2KA_DistributedSystems CAVA_Automata CAVA_LTL_Modelchecker CCS CISC-Kernel CRDT CYK CakeML CakeML_Codegen Call_Arity Card_Equiv_Relations Card_Multisets Card_Number_Partitions Card_Partitions Cartan_FP Case_Labeling Catalan_Numbers Category Category2 Category3 Cauchy Cayley_Hamilton Certification_Monads Chandy_Lamport Chord_Segments Circus Clean ClockSynchInst Closest_Pair_Points CofGroups Coinductive Coinductive_Languages Collections Comparison_Sort_Lower_Bound Compiling-Exceptions-Correctly Complete_Non_Orders Completeness Complex_Geometry Complx ComponentDependencies ConcurrentGC ConcurrentIMP Concurrent_Ref_Alg Concurrent_Revisions Consensus_Refined Constructive_Cryptography Constructor_Funs Containers CoreC++ Core_DOM Core_SC_DOM Count_Complex_Roots CryptHOL CryptoBasedCompositionalProperties +CSP_RefTK DFS_Framework DPT-SAT-Solver DataRefinementIBP Datatype_Order_Generator Decl_Sem_Fun_PL Decreasing-Diagrams Decreasing-Diagrams-II Deep_Learning +Delta_System_Lemma Density_Compiler Dependent_SIFUM_Refinement Dependent_SIFUM_Type_Systems Depth-First-Search Derangements Deriving Descartes_Sign_Rule Dict_Construction Differential_Dynamic_Logic Differential_Game_Logic Dijkstra_Shortest_Path Diophantine_Eqns_Lin_Hom Dirichlet_L Dirichlet_Series DiscretePricing Discrete_Summation DiskPaxos DOM_Components DynamicArchitectures Dynamic_Tables E_Transcendental Echelon_Form EdmondsKarp_Maxflow Efficient-Mergesort Elliptic_Curves_Group_Law Encodability_Process_Calculi Epistemic_Logic Ergodic_Theory Error_Function Euler_MacLaurin Euler_Partition Example-Submission Extended_Finite_State_Machine_Inference Extended_Finite_State_Machines FFT FLP FOL-Fitting FOL_Harrison FOL_Seq_Calc1 Factored_Transition_System_Bounding Falling_Factorial_Sum Farkas FeatherweightJava Featherweight_OCL Fermat3_4 FileRefinement FinFun Finger-Trees +Finite-Map-Extras Finite_Automata_HF -Finite-Map-Extras First_Order_Terms First_Welfare_Theorem Fishburn_Impossibility Fisher_Yates Flow_Networks Floyd_Warshall Flyspeck-Tame FocusStreamsCaseStudies Forcing Formal_SSA Formula_Derivatives Fourier Free-Boolean-Algebra Free-Groups FunWithFunctions FunWithTilings Functional-Automata Functional_Ordered_Resolution_Prover Furstenberg_Topology GPU_Kernel_PL Gabow_SCC Game_Based_Crypto Gauss-Jordan-Elim-Fun Gauss_Jordan Gauss_Sums Gaussian_Integers GenClock General-Triangle Generalized_Counting_Sort Generic_Deriving Generic_Join GewirthPGCProof Girth_Chromatic GoedelGod Goedel_HFSet_Semantic Goedel_HFSet_Semanticless Goedel_Incompleteness Goodstein_Lambda GraphMarkingIBP Graph_Saturation Graph_Theory Green Groebner_Bases Groebner_Macaulay Gromov_Hyperbolicity Group-Ring-Module HOL-CSP HOLCF-Prelude HRB-Slicing Heard_Of Hello_World HereditarilyFinite Hermite Hidden_Markov_Models Higher_Order_Terms Hoare_Time HotelKeyCards Huffman Hybrid_Logic Hybrid_Multi_Lane_Spatial_Logic Hybrid_Systems_VCs HyperCTL IEEE_Floating_Point IMAP-CRDT IMO2019 IMP2 IMP2_Binary_Heap IP_Addresses Imperative_Insertion_Sort Impossible_Geometry Incompleteness Incredible_Proof_Machine Inductive_Confidentiality Inductive_Inference InfPathElimination InformationFlowSlicing InformationFlowSlicing_Inter Integration Interpreter_Optimizations Interval_Arithmetic_Word32 Iptables_Semantics Irrational_Series_Erdos_Straus Irrationality_J_Hancl Isabelle_C Isabelle_Marries_Dirac Isabelle_Meta_Model Jacobson_Basic_Algebra Jinja JinjaThreads JiveDataStoreModel Jordan_Hoelder Jordan_Normal_Form KAD KAT_and_DRA KBPs KD_Tree Key_Agreement_Strong_Adversaries Kleene_Algebra Knuth_Bendix_Order Knot_Theory Knuth_Bendix_Order Knuth_Morris_Pratt Koenigsberg_Friendship Kruskal Kuratowski_Closure_Complement LLL_Basis_Reduction LLL_Factorization LOFT LTL LTL_Master_Theorem LTL_Normal_Form LTL_to_DRA LTL_to_GBA Lam-ml-Normalization LambdaAuth LambdaMu Lambda_Free_EPO Lambda_Free_KBOs Lambda_Free_RPOs Lambert_W Landau_Symbols Laplace_Transform Latin_Square LatticeProperties Launchbury Lazy-Lists-II Lazy_Case Lehmer Lifting_Definition_Option LightweightJava LinearQuantifierElim Linear_Inequalities Linear_Programming Linear_Recurrences Liouville_Numbers List-Index List-Infinite List_Interleaving List_Inversions List_Update LocalLexing Localization_Ring Locally-Nameless-Sigma Lowe_Ontological_Argument Lower_Semicontinuous Lp Lucas_Theorem MFMC_Countable MFODL_Monitor_Optimized MFOTL_Monitor MSO_Regex_Equivalence Markov_Models Marriage Mason_Stothers Matrices_for_ODEs Matrix Matrix_Tensor Matroids Max-Card-Matching Median_Of_Medians_Selection Menger Mersenne_Primes MiniML Minimal_SSA Minkowskis_Theorem Minsky_Machines Modal_Logics_for_NTS Modular_Assembly_Kit_Security Monad_Memo_DP Monad_Normalisation MonoBoolTranAlgebra MonoidalCategory Monomorphic_Monad MuchAdoAboutTwo Multi_Party_Computation Multirelations Myhill-Nerode Name_Carrying_Type_Inference Nash_Williams Nat-Interval-Logic Native_Word Nested_Multisets_Ordinals Network_Security_Policy_Verification Neumann_Morgenstern_Utility No_FTL_observers Nominal2 Noninterference_CSP Noninterference_Concurrent_Composition Noninterference_Generic_Unwinding Noninterference_Inductive_Unwinding Noninterference_Ipurge_Unwinding Noninterference_Sequential_Composition NormByEval Nullstellensatz Octonions OpSets Open_Induction Optics Optimal_BST Orbit_Stabiliser Order_Lattice_Props Ordered_Resolution_Prover Ordinal Ordinal_Partitions Ordinals_and_Cardinals Ordinary_Differential_Equations PAC_Checker PCF PLM POPLmark-deBruijn PSemigroupsConvolution Pairing_Heap Paraconsistency Parity_Game Partial_Function_MR Partial_Order_Reduction Password_Authentication_Protocol Pell Perfect-Number-Thm Perron_Frobenius Physical_Quantities Pi_Calculus Pi_Transcendental Planarity_Certificates Poincare_Bendixson Poincare_Disc Polynomial_Factorization Polynomial_Interpolation Polynomials Pop_Refinement Posix-Lexing Possibilistic_Noninterference Power_Sum_Polynomials Pratt_Certificate Presburger-Automata Prim_Dijkstra_Simple Prime_Distribution_Elementary Prime_Harmonic_Series Prime_Number_Theorem Priority_Queue_Braun Priority_Search_Trees Probabilistic_Noninterference Probabilistic_Prime_Tests Probabilistic_System_Zoo Probabilistic_Timed_Automata Probabilistic_While Program-Conflict-Analysis Projective_Geometry Promela Proof_Strategy_Language PropResPI Propositional_Proof_Systems Prpu_Maxflow PseudoHoops Psi_Calculi Ptolemys_Theorem QHLProver QR_Decomposition Quantales Quaternions Quick_Sort_Cost RIPEMD-160-SPARK ROBDD RSAPSS Ramsey-Infinite Random_BSTs Random_Graph_Subgraph_Threshold Randomised_BSTs Randomised_Social_Choice Rank_Nullity_Theorem Real_Impl Recursion-Addition Recursion-Theory-I Refine_Imperative_HOL Refine_Monadic RefinementReactive Regex_Equivalence Regular-Sets Regular_Algebras Relation_Algebra Relational-Incorrectness-Logic Relational_Disjoint_Set_Forests Relational_Method Relational_Minimum_Spanning_Trees Relational_Paths Rep_Fin_Groups Residuated_Lattices Resolution_FOL Rewriting_Z Ribbon_Proofs Robbins-Conjecture Robinson_Arithmetic Root_Balanced_Tree Routing Roy_Floyd_Warshall SATSolverVerification SC_DOM_Components SDS_Impossibility SIFPL SIFUM_Type_Systems SPARCv8 Safe_Distance Safe_OCL Saturation_Framework Saturation_Framework_Extensions Shadow_DOM Secondary_Sylow Security_Protocol_Refinement Selection_Heap_Sort SenSocialChoice Separata Separation_Algebra Separation_Logic_Imperative_HOL SequentInvertibility Shadow_SC_DOM Shivers-CFA ShortestPath Show Sigma_Commit_Crypto Signature_Groebner Simpl Simple_Firewall Simplex Skew_Heap Skip_Lists Slicing Sliding_Window_Algorithm Smith_Normal_Form Smooth_Manifolds Sort_Encodings Source_Coding_Theorem Special_Function_Bounds Splay_Tree Sqrt_Babylonian Stable_Matching Statecharts Stateful_Protocol_Composition_and_Typing Stellar_Quorums Stern_Brocot Stewart_Apollonius Stirling_Formula Stochastic_Matrices Stone_Algebras Stone_Kleene_Relation_Algebras Stone_Relation_Algebras Store_Buffer_Reduction Stream-Fusion Stream_Fusion_Code Strong_Security Sturm_Sequences Sturm_Tarski Stuttering_Equivalence Subresultants Subset_Boolean_Algebras SumSquares SuperCalc Surprise_Paradox Symmetric_Polynomials Syntax_Independent_Logic Szpilrajn TESL_Language TLA Tail_Recursive_Functions Tarskis_Geometry Taylor_Models Timed_Automata +Topological_Semantics Topology TortoiseHare Transcendence_Series_Hancl_Rucki Transformer_Semantics Transition_Systems_and_Automata Transitive-Closure Transitive-Closure-II Treaps Tree-Automata Tree_Decomposition Triangle Trie Twelvefold_Way Tycon Types_Tableaus_and_Goedels_God UPF UPF_Firewall UTP Universal_Turing_Machine UpDown_Scheme Valuation VectorSpace VeriComp Verified-Prover Verified_SAT_Based_AI_Planning VerifyThis2018 VerifyThis2019 Vickrey_Clarke_Groves VolpanoSmith WHATandWHERE_Security WOOT_Strong_Eventual_Consistency WebAssembly Weight_Balanced_Trees Well_Quasi_Orders Winding_Number_Eval Word_Lib WorkerWrapper XML ZFC_in_HOL Zeta_3_Irrational Zeta_Function pGCL diff --git a/thys/Topological_Semantics/ROOT b/thys/Topological_Semantics/ROOT new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/ROOT @@ -0,0 +1,28 @@ +chapter AFP + +session "Topological_Semantics" (AFP) = "HOL" + + options [timeout = 600] + theories + sse_boolean_algebra + sse_boolean_algebra_quantification + sse_operation_positive + sse_operation_positive_quantification + sse_operation_negative + sse_operation_negative_quantification + topo_operators_basic + topo_operators_derivative + topo_alexandrov + topo_frontier_algebra + topo_negation_conditions + topo_negation_fixedpoints + ex_LFIs + topo_strict_implication + ex_subminimal_logics + topo_derivative_algebra + ex_LFUs + topo_border_algebra + topo_closure_algebra + topo_interior_algebra + document_files + "root.tex" + "root.bib" diff --git a/thys/Topological_Semantics/document/root.bib b/thys/Topological_Semantics/document/root.bib new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/document/root.bib @@ -0,0 +1,149 @@ +@article{J23, + keywords = {Higher Order Logic, Semantic Embedding, Modal + Logics, Henkin Semantics}, + author = {C. Benzm{\"u}ller and L.C. Paulson}, + title = {Quantified Multimodal Logics in Simple Type Theory}, + journal = {Logica Universalis (Special Issue on Multimodal + Logics)}, + year = 2013, + volume = 7, + number = 1, + pages = {7-20}, + doi = {10.1007/s11787-012-0052-y}, + Note = {Preprint: + \url{http://christoph-benzmueller.de/papers/J23.pdf}} +} + +@article{J41, + author = {Christoph Benzm{\"u}ller}, + title = {Universal (Meta-)Logical Reasoning: Recent + Successes}, + journal = {Science of Computer Programming}, + year = 2019, + volume = 172, + pages = {48-62}, + Note = {Preprint: + \url{http://doi.org/10.13140/RG.2.2.11039.61609/2}}, + doi = {10.1016/j.scico.2018.10.008}, +} + +@book{Hausdorff, + title={Grundz{\"u}ge der {M}engenlehre}, + author={Hausdorff, Felix}, + volume={7}, + year={1914}, + publisher={von Veit} +} + +@article{AOT, + title={The algebra of topology}, + author={McKinsey, John Charles Chenoweth and Tarski, Alfred}, + journal={Annals of mathematics}, + pages={141--191}, + year={1944}, + publisher={JSTOR} +} + +@article{Zarycki1, + title={Quelques notions fondamentales de l'Analysis Situs au point de vue de l'Alg{\`e}bre de la Logique}, + author={Zarycki, Miron}, + journal={Fundamenta Mathematicae}, + volume={9}, + number={1}, + pages={3--15}, + year={1927}, + publisher={Institute of Mathematics Polish Academy of Sciences}, + Note = {English translation by Mark Bowron: + \url{https://www.researchgate.net/scientific-contributions/Miron-Zarycki-2016157096}} +} + +@article{Zarycki2, + title={Allgemeine {E}igenschaften der Cantorschen {K}oh{\"a}renzen}, + author={Zarycki, Miron}, + journal={Transactions of the American Mathematical Society}, + volume={30}, + number={3}, + pages={498--506}, + year={1928}, + publisher={JSTOR}, + Note = {English translation by Mark Bowron: + \url{https://www.researchgate.net/scientific-contributions/Miron-Zarycki-2016157096}} +} + +@article{Zarycki3, + title={Some Properties of the Derived Set Operation in Abstract Spaces.}, + author={Zarycki, Miron}, + journal={Nauk. Zap. Ser. Fiz.-Mat.}, + volume={5}, + pages={22-33}, + year={1947}, + Note = {English translation by Mark Bowron: + \url{https://www.researchgate.net/scientific-contributions/Miron-Zarycki-2016157096}} +} + +@article{Kuratowski1, + title={Sur l'op{\'e}ration \={A} de l'analysis situs}, + author={Kuratowski, Kazimierz}, + journal={Fundamenta Mathematicae}, + volume={3}, + number={1}, + pages={182--199}, + year={1922} +} + +@article{JML, + title={Der {M}inimalkalk{\"u}l, ein reduzierter intuitionistischer {F}ormalismus}, + author={Johansson, Ingebrigt}, + journal={Compositio mathematica}, + volume={4}, + pages={119--136}, + year={1937} +} + +@book{Kuratowski2, + title={Topology: Volume I}, + author={Kuratowski, Kazimierz}, + volume={1}, + year={2014}, + publisher={Elsevier} +} + +@article{Esakia, + title={Intuitionistic logic and modality via topology}, + author={Esakia, Leo}, + journal={Annals of Pure and Applied Logic}, + volume={127}, + number={1-3}, + pages={155--170}, + year={2004}, + publisher={Elsevier} +} + +@incollection{LFI, + title={Logics of formal inconsistency}, + author={Carnielli, Walter and Coniglio, Marcelo E and Marcos, Joao}, + booktitle={Handbook of philosophical logic}, + pages={1--93}, + year={2007}, + publisher={Springer} +} + +@article{RLFI, + title={Logics of Formal Inconsistency enriched with replacement: an algebraic and modal account}, + author={Walter Carnielli and Marcelo E. Coniglio and David Fuenmayor}, + year={2020}, + number={2003.09522}, + journal={arXiv}, + volume={math.LO} +} + +@article{LFU, + title={Nearly every normal modal logic is paranormal}, + author={Marcos, Joao}, + journal={Logique et Analyse}, + volume={48}, + number={189/192}, + pages={279--300}, + year={2005}, + publisher={JSTOR} +} diff --git a/thys/Topological_Semantics/document/root.tex b/thys/Topological_Semantics/document/root.tex new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/document/root.tex @@ -0,0 +1,67 @@ +\documentclass[11pt,a4paper]{article} +\usepackage{isabelle,isabellesym} +%\usepackage{a4wide} +\usepackage{fullpage} + +% further packages required for unusual symbols (see also +% isabellesym.sty), use only when needed + +\usepackage{amssymb} + %for \, \, \, \, \, \, + %\, \, \, \, \, + %\, \, \ + +%\usepackage{eurosym} + %for \ + +%\usepackage[only,bigsqcap]{stmaryrd} + %for \ + +%\usepackage{eufrak} + %for \ ... \, \ ... \ (also included in amssymb) + +%\usepackage{textcomp} + %for \, \, \, \, \, + %\ + +% this should be the last package used +\usepackage{pdfsetup} + +% urls in roman style, theory text in math-similar italics +\urlstyle{rm} +\isabellestyle{it} + +% for uniform font size +%\renewcommand{\isastyle}{\isastyleminor} + + +\begin{document} + +\title{Topological semantics for paraconsistent and paracomplete logics} +\author{David Fuenmayor} + +\maketitle + +\begin{abstract} + We introduce a generalized topological semantics for paraconsistent and paracomplete logics by drawing upon early works on topological Boolean algebras (cf.~works by Kuratowski, Zarycki, McKinsey \& Tarski, etc.). In particular, this work exemplarily illustrates the shallow semantical embeddings approach (SSE) employing the proof assistant Isabelle/HOL. By means of the SSE technique we can effectively harness theorem provers, model finders and `hammers' for reasoning with quantified non-classical logics. +\end{abstract} + +\tableofcontents + +\vspace*{40pt} +% sane default for proof documents +\parindent 0pt\parskip 0.5ex + +% generated text of all theories +\input{session} + +% optional bibliography +\bibliographystyle{abbrv} +\bibliography{root} + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/thys/Topological_Semantics/ex_LFIs.thy b/thys/Topological_Semantics/ex_LFIs.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/ex_LFIs.thy @@ -0,0 +1,157 @@ +theory ex_LFIs + imports topo_negation_conditions +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +section \Example application: Logics of Formal Inconsistency (LFIs)\ +text\\noindent{The LFIs @{cite LFI} @{cite RLFI} are a family of paraconsistent logics featuring a 'consistency' +operator @{text "\<^bold>\"} that can be used to recover some classical properties of negation (in particular ECQ). +We show how to semantically embed LFIs as extensions of Boolean algebras (here as frontier algebras).}\ + +text\\noindent{Logical validity can be defined as truth in all worlds/points (i.e. as denoting the top element)}\ +abbreviation gtrue::"\\bool" ("[\<^bold>\ _]") where "[\<^bold>\ A] \ \w. A w" +lemma gtrue_def: "[\<^bold>\ A] \ A \<^bold>\ \<^bold>\" by (simp add: top_def) + +text\\noindent{When defining a logic over an existing algebra we have two choices: a global (truth preserving) +and a local (truth-degree preserving) notion of logical consequence. For LFIs we prefer the latter.}\ +abbreviation conseq_global1::"\\\\bool" ("[_ \<^bold>\\<^sub>g _]") where "[A \<^bold>\\<^sub>g B] \ [\<^bold>\ A] \ [\<^bold>\ B]" +abbreviation conseq_global2::"\\\\\\bool" ("[_,_ \<^bold>\\<^sub>g _]") where "[A\<^sub>1, A\<^sub>2 \<^bold>\\<^sub>g B] \ [\<^bold>\ A\<^sub>1] \ [\<^bold>\ A\<^sub>2] \ [\<^bold>\ B]" +abbreviation conseq_global3::"\\\\\\\\bool" ("[_,_,_ \<^bold>\\<^sub>g _]") where "[A\<^sub>1, A\<^sub>2, A\<^sub>3 \<^bold>\\<^sub>g B] \ [\<^bold>\ A\<^sub>1] \ [\<^bold>\ A\<^sub>2] \ [\<^bold>\ A\<^sub>3] \ [\<^bold>\ B]" +abbreviation conseq_local1::"\\\\bool" ("[_ \<^bold>\ _]") where "[A \<^bold>\ B] \ A \<^bold>\ B" +abbreviation conseq_local2::"\\\\\\bool" ("[_,_ \<^bold>\ _]") where "[A\<^sub>1, A\<^sub>2 \<^bold>\ B] \ A\<^sub>1 \<^bold>\ A\<^sub>2 \<^bold>\ B" +abbreviation conseq_local3::"\\\\\\\\bool" ("[_,_,_ \<^bold>\ _]") where "[A\<^sub>1, A\<^sub>2, A\<^sub>3 \<^bold>\ B] \ A\<^sub>1 \<^bold>\ A\<^sub>2 \<^bold>\ A\<^sub>3 \<^bold>\ B" +(*add more as the need arises...*) + +text\\noindent{For LFIs we use the (paraconsistent) closure-based negation previously defined (taking frontier as primitive). }\ +abbreviation cneg::"\\\" ("\<^bold>\") where "\<^bold>\A \ \<^bold>\\<^sup>CA" + +text\\noindent{In terms of the frontier operator the negation looks as follows:}\ +lemma "\<^bold>\A \<^bold>\ \<^bold>\A \<^bold>\ \(\<^bold>\A)" by (simp add: neg_C_def pC2) +lemma cneg_prop: "Fr_2 \ \ \<^bold>\A \<^bold>\ \<^bold>\A \<^bold>\ \(A)" using pC2 pF2 unfolding conn by blast + +text\\noindent{This negation is of course boldly paraconsistent.}\ +lemma "[a, \<^bold>\a \<^bold>\ b]" nitpick oops (*countermodel*) +lemma "[a, \<^bold>\a \<^bold>\ \<^bold>\b]" nitpick oops (*countermodel*) +lemma "[a, \<^bold>\a \<^bold>\\<^sub>g b]" nitpick oops (*countermodel*) +lemma "[a, \<^bold>\a \<^bold>\\<^sub>g \<^bold>\b]" nitpick oops (*countermodel*) + +text\\noindent{We define two pairs of in/consistency operators and show how they relate to each other. +Using LFIs terminology, the minimal logic so encoded corresponds to 'RmbC-ciw' (cf. @{cite RLFI}).}\ +abbreviation op_inc_a::"\\\" ("\\<^sup>A_" [57]58) where "\\<^sup>AA \ A \<^bold>\ \<^bold>\A" +abbreviation op_con_a::"\\\" ("\<^bold>\\<^sup>A_" [57]58) where "\<^bold>\\<^sup>AA \ \<^bold>\\\<^sup>AA" +abbreviation op_inc_b::"\\\" ("\\<^sup>B_" [57]58) where "\\<^sup>BA \ \ A" +abbreviation op_con_b::"\\\" ("\<^bold>\\<^sup>B_" [57]58) where "\<^bold>\\<^sup>BA \ \\<^sup>c A" + +text\\noindent{Observe that assumming condition Fr-2 are we allowed to exchange A and B variants.}\ +lemma pincAB: "Fr_2 \ \ \\<^sup>AA \<^bold>\ \\<^sup>BA" using Br_fr_def Cl_fr_def pF2 conn by auto +lemma pconAB: "Fr_2 \ \ \<^bold>\\<^sup>AA \<^bold>\ \<^bold>\\<^sup>BA" using pincAB unfolding conn by simp + +text\\noindent{Variants A and B give us slightly different properties.}\ +lemma Prop1: "\<^bold>\\<^sup>BA \<^bold>\ \\<^sup>f\<^sup>p A" using fp1 unfolding conn equal_op_def by metis +lemma "\<^bold>\\<^sup>AA \<^bold>\ A \<^bold>\ \ A" nitpick oops (*countermodel*) +lemma Prop2: "Cl A \ \<^bold>\\<^sup>A\<^bold>\A \<^bold>\ \<^bold>\" using pC2 unfolding conn by auto +lemma "Cl A \ \<^bold>\\<^sup>B\<^bold>\A \<^bold>\ \<^bold>\" nitpick oops (*countermodel*) +lemma Prop3: "Cl A \ \\<^sup>A\<^bold>\A \<^bold>\ \<^bold>\" using Cl_fr_def unfolding conn by auto +lemma "Cl A \ \\<^sup>B\<^bold>\A \<^bold>\ \<^bold>\" nitpick oops (*countermodel*) +lemma Prop4: "Op A \ \<^bold>\\<^sup>BA \<^bold>\ \<^bold>\" using Op_Bzero unfolding conn by simp +lemma "Op A \ \<^bold>\\<^sup>AA \<^bold>\ \<^bold>\" nitpick oops (*countermodel*) +lemma Prop5: "Op A \ \\<^sup>BA \<^bold>\ \<^bold>\" using Op_Bzero by simp +lemma "Op A \ \\<^sup>AA \<^bold>\ \<^bold>\" nitpick oops (*countermodel*) + +text\\noindent{Importantly, LFIs must satisfy the so-called 'principle of gentle explosion'. Only variant A works here:}\ +lemma "[\<^bold>\\<^sup>Aa, a, \<^bold>\a \<^bold>\ b]" using compl_def meet_def by auto +lemma "[\<^bold>\\<^sup>Aa, a, \<^bold>\a \<^bold>\\<^sub>g b]" using compl_def meet_def by auto +lemma "[\<^bold>\\<^sup>Ba, a, \<^bold>\a \<^bold>\ b]" nitpick oops (*countermodel*) +lemma "[\<^bold>\\<^sup>Ba, a, \<^bold>\a \<^bold>\\<^sub>g b]" nitpick oops (*countermodel*) + +text\\noindent{In what follows we employ the (minimal) A-variant and verify some properties.}\ +abbreviation op_inc :: "\\\" ("\_" [57]58) where "\A \ \\<^sup>AA" +abbreviation op_con :: "\\\" ("\<^bold>\_" [57]58) where "\<^bold>\A \ \<^bold>\\A" + +lemma "TND(\<^bold>\)" by (simp add: TND_C) +lemma "ECQm(\<^bold>\)" nitpick oops (*countermodel*) +lemma "Fr_1b \ \ Fr_2 \ \ LNC(\<^bold>\)" by (simp add: LNC_C PF6) +lemma "\ \ \ DNI(\<^bold>\)" nitpick oops (*countermodel*) +lemma "\ \ \ DNE(\<^bold>\)" nitpick oops (*countermodel*) +lemma "Fr_1b \ \ Fr_2 \ \ CoPw(\<^bold>\)" by (simp add: CoPw_C PF6) +lemma "\ \ \ CoP1(\<^bold>\)" nitpick oops (*countermodel*) +lemma "\ \ \ CoP2(\<^bold>\)" nitpick oops (*countermodel*) +lemma "\ \ \ CoP3(\<^bold>\)" nitpick oops (*countermodel*) +lemma "Fr_1a \ \ Fr_2 \ \ DM3(\<^bold>\)" by (simp add: DM3_C) +lemma "\ \ \ DM4(\<^bold>\)" nitpick oops (*countermodel*) +lemma "nNor(\<^bold>\)" by (simp add: nNor_C) +lemma "Fr_3 \ \ nDNor(\<^bold>\)" by (simp add: nDNor_C) +lemma "Fr_1b \ \ Fr_2 \ \ MT0(\<^bold>\)" by (simp add: MT0_C PF6) +lemma "Fr_1b \ \ Fr_2 \ \ MT1(\<^bold>\)" by (simp add: MT1_C PF6) +lemma "\ \ \ MT2(\<^bold>\)" nitpick oops (*countermodel*) +lemma "Fr_1b \ \ Fr_2 \ \ Fr_3 \ \ MT3(\<^bold>\)" using MT3_C by auto + +text\\noindent{We show how all local contraposition variants (lCoP) can be recovered using the consistency operator. +Observe that we can recover in the same way other (weaker) properties: CoP, MT and DNI/DNE (local \& global).}\ +lemma "\ \ \ lCoPw(\<^bold>\)(\<^bold>\)" nitpick oops (*countermodel*) +lemma cons_lcop1: "[\<^bold>\b, a \<^bold>\ b \<^bold>\ \<^bold>\b \<^bold>\ \<^bold>\a]" using Cl_fr_def conn by auto +lemma "\ \ \ lCoP1(\<^bold>\)(\<^bold>\)" nitpick oops (*countermodel*) +lemma cons_lcop2: "[\<^bold>\b, a \<^bold>\ \<^bold>\b \<^bold>\ b \<^bold>\ \<^bold>\a]" using Cl_fr_def conn by auto +lemma "\ \ \ lCoP2(\<^bold>\)(\<^bold>\)" nitpick oops (*countermodel*) +lemma cons_lcop3: "[\<^bold>\b, \<^bold>\a \<^bold>\ b \<^bold>\ \<^bold>\b \<^bold>\ a]" using Cl_fr_def conn by auto +lemma "\ \ \ lCoP3(\<^bold>\)(\<^bold>\)" nitpick oops (*countermodel*) +lemma cons_lcop4: "[\<^bold>\b, \<^bold>\a \<^bold>\ \<^bold>\b \<^bold>\ b \<^bold>\ a]" using Cl_fr_def conn by auto +text\\noindent{Disjunctive syllogism (DS).}\ +lemma "\ \ \ DS1(\<^bold>\)(\<^bold>\)" nitpick oops (*countermodel*) +lemma cons_ds1: "[\<^bold>\a, a \<^bold>\ b \<^bold>\ \<^bold>\a \<^bold>\ b]" using conn by auto +lemma "DS2(\<^bold>\)(\<^bold>\)" by (metis Cl_fr_def DS2_def compl_def impl_def join_def neg_C_def) +text\\noindent{Further properties.}\ +lemma "[a \<^bold>\ \<^bold>\a \<^bold>\ \<^bold>\(\<^bold>\a)]" by (simp add: pC2 conn) +lemma "\ \ \ [\<^bold>\(\<^bold>\a) \<^bold>\ a \<^bold>\ \<^bold>\a]" nitpick oops (* countermodel found *) +lemma "[\<^bold>\a \<^bold>\ \<^bold>\(a \<^bold>\ \<^bold>\a)]" by (simp add: pC2 conn) +lemma "\ \ \ [\<^bold>\(a \<^bold>\ \<^bold>\a) \<^bold>\ \<^bold>\a]" nitpick oops (* countermodel found *) + +text\\noindent{The following axioms are commonly employed in the literature on LFIs to obtain stronger logics. +We explore under which conditions they can be assumed while keeping the logic boldly paraconsistent.}\ +abbreviation cf where "cf \ DNE(\<^bold>\)" +abbreviation ce where "ce \ DNI(\<^bold>\)" +abbreviation ciw where "ciw \ \P. [\<^bold>\ \<^bold>\P \<^bold>\ \P]" +abbreviation ci where "ci \ \P. [\<^bold>\(\<^bold>\P) \<^bold>\ \P]" +abbreviation cl where "cl \ \P. [\<^bold>\(\P) \<^bold>\ \<^bold>\P]" +abbreviation ca_conj where "ca_conj \ \P Q. [\<^bold>\P,\<^bold>\Q \<^bold>\ \<^bold>\(P \<^bold>\ Q)]" +abbreviation ca_disj where "ca_disj \ \P Q. [\<^bold>\P,\<^bold>\Q \<^bold>\ \<^bold>\(P \<^bold>\ Q)]" +abbreviation ca_impl where "ca_impl \ \P Q. [\<^bold>\P,\<^bold>\Q \<^bold>\ \<^bold>\(P \<^bold>\ Q)]" +abbreviation ca where "ca \ ca_conj \ ca_disj \ ca_impl" + +text\\noindent{cf}\ +lemma "\ \ \ cf" nitpick oops +lemma "\ \ \ cf \ \ECQm(\<^bold>\)" nitpick[satisfy] oops (*model found*) +text\\noindent{ce}\ +lemma "\ \ \ ce" nitpick oops +lemma "Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ ce \ \ECQ(\<^bold>\)" nitpick[satisfy] oops (*model found*) +lemma "Fr_1 \ \ Fr_3 \ \ Fr_4 \ \ ce \ \ECQm(\<^bold>\)" nitpick[satisfy] oops (*model found*) +lemma "Fr_1a \ \ Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ ce \ \ECQm(\<^bold>\)" nitpick[satisfy] oops (*model found*) +lemma "Fr_1b \ \ Fr_2 \ \ ce \ ECQm(\<^bold>\)" unfolding Defs using CoP1_XCoP CoP1_def2 CoPw_C DNI_def ECQw_def PF6 XCoP_def2 by auto +text\\noindent{ciw}\ +lemma ciw by (simp add:conn) +text\\noindent{ci}\ +lemma "\ \ \ ci" nitpick oops +lemma "\ \ \ ci \ \ECQm(\<^bold>\)" nitpick[satisfy] oops (*model found*) +text\\noindent{cl}\ +lemma "\ \ \ cl" nitpick oops +lemma "Fr_1 \ \ Fr_3 \ \ Fr_4 \ \ cl \ \ECQm(\<^bold>\)" nitpick[satisfy] oops (*model found*) +lemma "Fr_1a \ \ Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ cl \ \ECQm(\<^bold>\)" nitpick[satisfy] oops (*model found*) +lemma "Fr_1b \ \ Fr_2 \ \ cl \ ECQ(\<^bold>\)" unfolding Defs by (metis BC_rel Br_Border Br_cl_def bottom_def compl_def eq_ext' meet_def neg_C_def) +text\\noindent{ca-conj/disj}\ +lemma "Fr_1a \ \ Fr_2 \ \ ca_conj" using DM3_C DM3_def conn by auto +lemma "Fr_1b \ \ Fr_2 \ \ ca_disj" using ADDI_b_def MONO_ADDIb monI pB1 pincAB unfolding conn by metis +lemma "\ \ \ ca_impl" nitpick oops +text\\noindent{ca-impl}\ +lemma "ca_impl \ \ECQ(\<^bold>\)" (*nitpick[satisfy]*) oops (*cannot find finite model*) +lemma "ca_impl \ ECQm(\<^bold>\)" oops (*nor proof yet*) +text\\noindent{cf \& ci}\ +lemma "Fr_1 \ \ Fr_3 \ \ Fr_4 \ \ cf \ ci \ \ECQm(\<^bold>\)" nitpick[satisfy] oops (*model found*) +lemma "Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ cf \ ci \ \ECQm(\<^bold>\)" nitpick[satisfy] oops (*model found*) +lemma "Fr_1b \ \ Fr_2 \ \ cf \ ci \ \ECQ(\<^bold>\)" (*nitpick[satisfy]*) oops (*cannot find finite model*) +lemma "\ \ \ cf \ ci \ ECQm(\<^bold>\)" oops (*nor proof yet*) +text\\noindent{cf \& cl}\ +lemma "Fr_1 \ \ Fr_3 \ \ Fr_4 \ \ cf \ cl \ \ECQm(\<^bold>\)" nitpick[satisfy] oops (*model found*) +lemma "Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ cf \ cl \ \ECQm(\<^bold>\)" nitpick[satisfy] oops (*model found*) +lemma "Fr_1b \ \ Fr_2 \ \ cf \ cl \ ECQ(\<^bold>\)" unfolding Defs by (smt Br_fr_def Fr_1b_def Prop2 Prop3 pF3 cneg_prop conn) + +end diff --git a/thys/Topological_Semantics/ex_LFUs.thy b/thys/Topological_Semantics/ex_LFUs.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/ex_LFUs.thy @@ -0,0 +1,84 @@ +theory ex_LFUs + imports topo_derivative_algebra sse_operation_negative +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +section \Example application: Logics of Formal Undeterminedness (LFUs)\ +text\\noindent{The LFUs @{cite LFU} @{cite LFI} are a family of paracomplete logics featuring a 'determinedness' +operator @{text "\<^bold>\"} that can be used to recover some classical properties of negation (in particular TND). +LFUs behave in a sense dually to LFIs. Both can be semantically embedded as extensions of Boolean algebras. +Here we show how to semantically embed LFUs as derivative algebras.}\ + +text\\noindent{(We rename (classical) meta-logical negation to avoid terminological confusion)}\ +abbreviation cneg::"bool\bool" ("\_" [40]40) where "\\ \ \\" + +text\\noindent{Logical validity can be defined as truth in all worlds/points (i.e. as denoting the top element)}\ +abbreviation gtrue::"\\bool" ("[\<^bold>\ _]") where "[\<^bold>\ A] \ \w. A w" +lemma gtrue_def: "[\<^bold>\ A] \ A \<^bold>\ \<^bold>\" by (simp add: top_def) + +text\\noindent{As for LFIs, we focus on the local (truth-degree preserving) notion of logical consequence.}\ +abbreviation conseq_local1::"\\\\bool" ("[_ \<^bold>\ _]") where "[A \<^bold>\ B] \ A \<^bold>\ B" +abbreviation conseq_local2::"\\\\\\bool" ("[_,_ \<^bold>\ _]") where "[A\<^sub>1, A\<^sub>2 \<^bold>\ B] \ A\<^sub>1 \<^bold>\ A\<^sub>2 \<^bold>\ B" +abbreviation conseq_local12::"\\\\\\bool" ("[_ \<^bold>\ _,_]") where "[A \<^bold>\ B\<^sub>1, B\<^sub>2] \ A \<^bold>\ B\<^sub>1 \<^bold>\ B\<^sub>2" +(*add more as the need arises...*) + +text\\noindent{For LFUs we use the interior-based negation previously defined (taking derivative as primitive). }\ +definition ineg::"\\\" ("\<^bold>\") where "\<^bold>\A \ \(\<^bold>\A)" +declare ineg_def[conn] + +text\\noindent{In terms of the derivative operator the negation looks as follows:}\ +lemma ineg_prop: "\<^bold>\A \<^bold>\ \<^bold>\(\ A) \<^bold>\ A" using Cl_der_def IB_rel Int_br_def eq_ext' pB4 conn by fastforce + +text\\noindent{This negation is of course paracomplete.}\ +lemma "[\<^bold>\ a \<^bold>\ \<^bold>\a]" nitpick oops (*countermodel*) + +text\\noindent{We define two pairs of in/determinedness operators and show how they relate to each other.}\ +abbreviation op_det::"\\\" ("\<^bold>\_" [57]58) where "\<^bold>\A \ \\<^sup>d A" +abbreviation op_ind::"\\\" ("\_" [57]58) where "\A \ \<^bold>\\<^bold>\A" + +lemma op_det_def: "\<^bold>\a \<^bold>\ a \<^bold>\ \<^bold>\a" by (simp add: compl_def diff_def dual_def ineg_def join_def pB1) +lemma Prop1: "\<^bold>\A \<^bold>\ \\<^sup>f\<^sup>p A" by (metis dimp_def eq_ext' fp3) +lemma Prop2: "Op A \ \<^bold>\\<^bold>\A \<^bold>\ \<^bold>\" by (metis dual_def dual_symm pB1 pI1 top_def compl_def diff_def) +lemma Prop3: "Op A \ \\<^bold>\A \<^bold>\ \<^bold>\" by (metis Op_Bzero dual_def dual_symm) +lemma Prop4: "Cl A \ \<^bold>\A \<^bold>\ \<^bold>\" by (metis Prop1 dimp_def top_def) +lemma Prop5: "Cl A \ \A \<^bold>\ \<^bold>\" by (simp add: Prop4 bottom_def compl_def top_def) + +text\\noindent{Analogously as for LFIs, LFUs provide means for recovering the principle of excluded middle.}\ +lemma "[\ \<^bold>\ \a, a \<^bold>\ \<^bold>\a]" using IB_rel Int_br_def compl_def diff_def dual_def eq_ext' ineg_def join_def by fastforce +lemma "[\, \<^bold>\a \<^bold>\ a \<^bold>\ \<^bold>\a]" using dual_def pB1 unfolding conn by auto + +lemma "TNDm(\<^bold>\)" nitpick oops (*countermodel*) +lemma "ECQ(\<^bold>\)" by (simp add: ECQ_def bottom_def diff_def ineg_prop meet_def) +lemma "Der_3 \ \ LNC(\<^bold>\)" using ineg_prop ECQ_def ID3 LNC_def dNOR_def unfolding conn by auto +lemma "\
\ \ DNI(\<^bold>\)" nitpick oops (*countermodel*) +lemma "\
\ \ DNE(\<^bold>\)" nitpick oops (*countermodel*) +lemma "Der_1b \ \ CoPw(\<^bold>\)" by (smt CoPw_def MONO_ADDIb PD1 compl_def ineg_def monI) +lemma "\
\ \ CoP1(\<^bold>\)" nitpick oops (*countermodel*) +lemma "\
\ \ CoP2(\<^bold>\)" nitpick oops (*countermodel*) +lemma "\
\ \ CoP3(\<^bold>\)" nitpick oops (*countermodel*) +lemma "\
\ \ DM3(\<^bold>\)" nitpick oops (*countermodel*) +lemma "Der_1a \ \ DM4(\<^bold>\)" unfolding Defs using ADDI_a_def ineg_prop compl_def diff_def join_def meet_def by auto +lemma "Der_3 \ \ nNor(\<^bold>\)" by (simp add: NOR_def ineg_prop nNor_def bottom_def compl_def diff_def top_def) +lemma "nDNor(\<^bold>\)" by (simp add: bottom_def diff_def ineg_prop nDNor_def top_def) +lemma "Der_1b \ \ MT0(\<^bold>\)" unfolding Defs by (metis (mono_tags, hide_lams) CD1b Disj_I OpCldual PD1 bottom_def compl_def ineg_def meet_def top_def) +lemma "Der_1b \ \ Der_3 \ \ MT1(\<^bold>\)" unfolding Defs by (metis (full_types) NOR_def PD1 bottom_def compl_def diff_def ineg_prop top_def) +lemma "\
\ \ MT2(\<^bold>\)" nitpick oops (*countermodel*) +lemma "\
\ \ MT3(\<^bold>\)" nitpick oops (*countermodel*) + +text\\noindent{We show how all local contraposition variants (lCoP) can be recovered using the determinedness operator. +Observe that we can recover in the same way other (weaker) properties: CoP, MT and DNI/DNE (local \& global).}\ +lemma "\
\ \ lCoPw(\<^bold>\)(\<^bold>\)" nitpick oops (*countermodel*) +lemma det_lcop1: "[\<^bold>\a, a \<^bold>\ b \<^bold>\ \<^bold>\b \<^bold>\ \<^bold>\a]" using dual_def pI1 conn by auto +lemma "\
\ \ lCoP1(\<^bold>\)(\<^bold>\)" nitpick oops (*countermodel*) +lemma det_lcop2: "[\<^bold>\a, a \<^bold>\ \<^bold>\b \<^bold>\ b \<^bold>\ \<^bold>\a]" using dual_def pI1 conn by auto +lemma "\
\ \ lCoP2(\<^bold>\)(\<^bold>\)" nitpick oops (*countermodel*) +lemma det_lcop3: "[\<^bold>\a, \<^bold>\a \<^bold>\ b \<^bold>\ \<^bold>\b \<^bold>\ a]" using dual_def pI1 conn by auto +lemma "\
\ \ lCoP3(\<^bold>\)(\<^bold>\)" nitpick oops (*countermodel*) +lemma det_lcop4: "[\<^bold>\a, \<^bold>\a \<^bold>\ \<^bold>\b \<^bold>\ b \<^bold>\ a]" using dual_def pI1 conn by auto + +text\\noindent{Disjunctive syllogism (DS).}\ +lemma "DS1(\<^bold>\)(\<^bold>\)" by (simp add: DS1_def diff_def impl_def ineg_prop join_def) +lemma "\
\ \ DS2(\<^bold>\)(\<^bold>\)" nitpick oops (*countermodel*) +lemma det_ds2: "[\<^bold>\a, \<^bold>\a \<^bold>\ b \<^bold>\ a \<^bold>\ b]" using pB1 dual_def conn by auto + +end diff --git a/thys/Topological_Semantics/ex_subminimal_logics.thy b/thys/Topological_Semantics/ex_subminimal_logics.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/ex_subminimal_logics.thy @@ -0,0 +1,220 @@ +theory ex_subminimal_logics + imports topo_negation_conditions topo_strict_implication +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +section \Example application: Subintuitionistic and subminimal logics\ + +text\\noindent{In this section we examine some special paracomplete logics. The idea is to illustrate an approach by +means of which we can obtain logics which are boldly paracomplete and (non-boldly) paraconsistent at the +same time, Johansson's 'minimal logic' @{cite JML} being the paradigmatic case we aim at modelling.}\ + +text\\noindent{Drawing upon the literature on Johanson's minimal logic, we introduce an unconstrained propositional +constant Q, which we then employ to define a 'rigid' frontier operation @{text "\'"}.}\ +consts Q::"\" +abbreviation "\' \ \X. Q" +abbreviation "\' \ \\<^sub>F \'" +abbreviation "\' \ \\<^sub>F \'" +abbreviation "\' \ \\<^sub>F \'" + +text\\noindent{As defined, @{text "\'"} (and its corresponding closure operation) satisfies several semantic conditions.}\ +lemma "Fr_1 \' \ Fr_2 \' \ Fr_4 \'" by (simp add: Fr_1_def Fr_2_def Fr_4_def conn) +lemma "Cl_1 \' \ Cl_2 \' \ Cl_4 \'" using ADDI_def CF2 IDEMb_def Cl_fr_def PC4 unfolding conn by auto +text\\noindent{However Fr-3 is not valid. In fact, adding it by hand would collapse into classical logic (making all sets clopen).}\ +lemma "Fr_3 \'" nitpick oops (*counterexample found*) +lemma "Cl_3 \'" nitpick oops (*counterexample found*) +lemma "Fr_3 \' \ \A. \'(A) \<^bold>\ \<^bold>\" by (simp add: NOR_def) + +text\\noindent{In order to obtain a paracomplete logic not validating ECQ, we define negation as follows,}\ +abbreviation neg_IC::"\\\" ("\<^bold>\") where "\<^bold>\A \ \'(\(\<^bold>\A))" + +text\\noindent{and observe that some plausible semantic properties obtain:}\ +lemma Q_def1: "\A. Q \<^bold>\ \<^bold>\A \<^bold>\ \<^bold>\(\<^bold>\A)" using Cl_fr_def IF2 dEXP_def conn by auto +lemma Q_def2: "Fr_1b \ \ \A. Q \<^bold>\ \<^bold>\(A \<^bold>\ \<^bold>\A)" by (smt Cl_fr_def IF2 dEXP_def MONO_def monI conn) +lemma neg_Idef: "\A. \<^bold>\A \<^bold>\ \(\<^bold>\A) \<^bold>\ Q" by (simp add: Cl_fr_def) +lemma neg_Cdef: "Fr_2 \ \ \A. \<^bold>\A \<^bold>\ \(A) \<^bold>\ Q" using Cl_fr_def Fr_2_def Int_fr_def conn by auto + +text\\noindent{The negation so defined validates some properties corresponding to a (rather weak) paracomplete logic:}\ +lemma "\ \ \ TND \<^bold>\" nitpick oops (*counterexample found: negation is paracomplete*) +lemma "\ \ \ TNDw \<^bold>\" nitpick oops +lemma "\ \ \ TNDm \<^bold>\" nitpick oops +lemma "\ \ \ ECQ \<^bold>\" nitpick oops (*counterexample found: negation is paraconsistent...*) +lemma ECQw: "ECQw \<^bold>\" using Cl_fr_def Disj_I ECQw_def unfolding conn by auto (*...but not 'boldly' paraconsistent*) +lemma ECQm: "ECQm \<^bold>\" using Cl_fr_def Disj_I ECQm_def unfolding conn by auto +lemma "\ \ \ LNC \<^bold>\" nitpick oops +lemma "\ \ \ DNI \<^bold>\" nitpick oops +lemma "\ \ \ DNE \<^bold>\" nitpick oops +lemma CoPw: "Fr_1b \ \ CoPw \<^bold>\" using Cl_fr_def MONO_def monI unfolding Defs conn by smt +lemma "\ \ \ CoP1 \<^bold>\" nitpick oops +lemma "\ \ \ CoP2 \<^bold>\" nitpick oops +lemma "\ \ \ CoP3 \<^bold>\" nitpick oops +lemma "\ \ \ XCoP \<^bold>\" nitpick oops +lemma "\ \ \ DM3 \<^bold>\" nitpick oops +lemma DM4: "Fr_1a \ \ DM4 \<^bold>\" using ADDI_a_def Cl_fr_def DM4_def IC1b IF1b dual_def unfolding conn by smt +lemma Nor: "Fr_2 \ \ Fr_3 \ \ nNor \<^bold>\" using Cl_fr_def nNor_I nNor_def unfolding conn by auto +lemma "\ \ \ nDNor \<^bold>\" nitpick oops +lemma "\ \ \ lCoPw(\<^bold>\) \<^bold>\" nitpick oops +lemma "\ \ \ lCoP1(\<^bold>\) \<^bold>\" nitpick oops +lemma "\ \ \ lCoP2(\<^bold>\) \<^bold>\" nitpick oops +lemma "\ \ \ lCoP3(\<^bold>\) \<^bold>\" nitpick oops +lemma "\ \ \ DS1(\<^bold>\) \<^bold>\" nitpick oops +lemma "\ \ \ DS2(\<^bold>\) \<^bold>\" nitpick oops + +text\\noindent{Moreover, we cannot have both DNI and DNE without validating ECQ (thus losing paraconsistency).}\ +lemma "DNI \<^bold>\ \ DNE \<^bold>\ \ ECQ \<^bold>\" using DNE_def ECQ_def Int_fr_def neg_Idef unfolding conn by (metis (no_types, lifting)) +text\\noindent{However, we can have all of De Morgan laws while keeping (non-bold) paraconsistency.}\ +lemma "\ECQ \<^bold>\ \ DM1 \<^bold>\ \ DM2 \<^bold>\ \ DM3 \<^bold>\ \ DM4 \<^bold>\ \ \ \" nitpick[satisfy,card w=3] oops (*(weakly paraconsistent) model found*) + +text\\noindent{Below we combine negation with strict implication and verify some interesting properties. +For instance, the following are not valid (and cannot become valid by adding semantic restrictions). }\ +lemma "\ \ \ \a b. (\<^bold>\a \<^bold>\ (a \<^bold>\ b)) \<^bold>\ \<^bold>\" nitpick oops (*counterexample found*) +lemma "\ \ \ \a b. (\<^bold>\a \<^bold>\ (a \<^bold>\ b)) \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a b. (a \<^bold>\ \<^bold>\a \<^bold>\ b) \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a b. (a \<^bold>\ \<^bold>\a \<^bold>\ b) \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a b. (a \<^bold>\ (b \<^bold>\ \<^bold>\b)) \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a b. (a \<^bold>\ (b \<^bold>\ \<^bold>\b)) \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a. (a \<^bold>\ \<^bold>\a) \<^bold>\ \<^bold>\a \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a. (a \<^bold>\ \<^bold>\a) \<^bold>\ \<^bold>\a \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a b. (a \<^bold>\ \<^bold>\a) \<^bold>\ b \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a b. (a \<^bold>\ \<^bold>\a) \<^bold>\ b \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a b. a \<^bold>\ (b \<^bold>\ \<^bold>\b) \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a b. a \<^bold>\ (b \<^bold>\ \<^bold>\b) \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a b. (a \<^bold>\ b) \<^bold>\ (\<^bold>\a \<^bold>\ \<^bold>\b) \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a b. (a \<^bold>\ b) \<^bold>\ (\<^bold>\a \<^bold>\ \<^bold>\b) \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a b. (a \<^bold>\ b) \<^bold>\ (a \<^bold>\ \<^bold>\b) \<^bold>\ \<^bold>\a \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a b. (a \<^bold>\ b) \<^bold>\ (a \<^bold>\ \<^bold>\b) \<^bold>\ \<^bold>\a \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a. (\<^bold>\a \<^bold>\ \<^bold>\) \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a. (\<^bold>\a \<^bold>\ \<^bold>\) \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a. (\<^bold>\a \<^bold>\ \<^bold>\(\<^bold>\\<^bold>\)) \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a. (\<^bold>\a \<^bold>\ \<^bold>\(\<^bold>\\<^bold>\)) \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a. \<^bold>\(\<^bold>\(\<^bold>\a)) \<^bold>\ \<^bold>\a \<^bold>\ \<^bold>\" nitpick oops +lemma "\ \ \ \a. \<^bold>\(\<^bold>\(\<^bold>\a)) \<^bold>\ \<^bold>\a \<^bold>\ \<^bold>\" nitpick oops + +text\\noindent{The (weak) local contraposition axiom is indeed valid under appropriate conditions.}\ +lemma lCoPw: "Fr_1 \ \ Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ lCoPw(\<^bold>\) \<^bold>\" proof - + assume fr1: "Fr_1 \" and fr2: "Fr_2 \" and fr3: "Fr_3 \" and fr4: "Fr_4 \" + { fix a b + from fr2 have "\<^bold>\b \<^bold>\ \<^bold>\a \<^bold>\ (\ a \<^bold>\ \ b) \<^bold>\ Q" using Cl_fr_def Fr_2_def Int_fr_def conn by auto + moreover from fr1 fr2 fr3 have "\(a \<^bold>\ b) \<^bold>\ \ a \<^bold>\ \ b" using IC_imp by simp + ultimately have "\(a \<^bold>\ b) \<^bold>\ \<^bold>\b \<^bold>\ \<^bold>\a" unfolding conn by simp + moreover from fr1 fr2 fr4 have "let A=(a \<^bold>\ b); B=(\<^bold>\b \<^bold>\ \<^bold>\a) in \ A \<^bold>\ B \ \ A \<^bold>\ \ B" + using PF1 MONO_MULTa IF1a IF4 PI9 Int_9_def by smt + ultimately have "\(a \<^bold>\ b) \<^bold>\ \(\<^bold>\b \<^bold>\ \<^bold>\a)" by simp + } hence "lCoPw(\<^bold>\) \<^bold>\" unfolding Defs conn by blast + thus ?thesis by simp +qed +lemma lCoPw_strict: "\ \ \ \a b. (a \<^bold>\ b) \<^bold>\ (\<^bold>\b \<^bold>\ \<^bold>\a) \<^bold>\ \<^bold>\" by (metis (no_types, lifting) DTw2 lCoPw lCoPw_def) + +text\\noindent{However, other (local) contraposition axioms are not valid.}\ +lemma "\ \ \ lCoP1(\<^bold>\) \<^bold>\" nitpick oops (*counterexample found*) +lemma "\ \ \ lCoP2(\<^bold>\) \<^bold>\" nitpick oops +lemma "\ \ \ lCoP3(\<^bold>\) \<^bold>\" nitpick oops +text\\noindent{And this time no variant of disjunctive syllogism is valid.}\ +lemma "\ \ \ DS1(\<^bold>\) \<^bold>\" nitpick oops +lemma "\ \ \ DS2(\<^bold>\) \<^bold>\" nitpick oops +lemma "\ \ \ DS2(\<^bold>\) \<^bold>\" nitpick oops +lemma "\ \ \ DS4(\<^bold>\) \<^bold>\" nitpick oops + +text\\noindent{Interestingly, one of the local contraposition axioms (lCoP1) follows from DNI.}\ +lemma DNI_lCoP1: "Fr_1 \ \ Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ DNI \<^bold>\ \ lCoP1(\<^bold>\) \<^bold>\" proof - + assume fr1: "Fr_1 \" and fr2: "Fr_2 \" and fr3: "Fr_3 \" and fr4: "Fr_4 \" + { assume dni: "DNI \<^bold>\" + { fix a b + from fr1 fr2 fr3 fr4 have "lCoPw(\<^bold>\) \<^bold>\" using lCoPw by simp + hence 1: "a \<^bold>\ \<^bold>\b \<^bold>\ \<^bold>\(\<^bold>\b) \<^bold>\ \<^bold>\a" unfolding lCoPw_def by simp + from fr1 have 2: "let A=b; B=\<^bold>\(\<^bold>\b); C=\<^bold>\a in A \<^bold>\ B \ \(B \<^bold>\ C) \<^bold>\ \(A \<^bold>\ C)" by (simp add: MONO_ant PF1 monI) + from dni have dnib: "b \<^bold>\ \<^bold>\(\<^bold>\b)" unfolding DNI_def by simp + from 1 2 dnib have "a \<^bold>\ \<^bold>\b \<^bold>\ b \<^bold>\ \<^bold>\a" unfolding conn by meson + } hence "lCoP1(\<^bold>\) \<^bold>\" unfolding Defs by blast + } thus ?thesis by simp +qed +text\\noindent{This entails some other interesting results.}\ +lemma DNI_CoP1: "Fr_1b \ \ DNI \<^bold>\ \ CoP1 \<^bold>\" using CoP1_def2 CoPw by blast +lemma CoP1_LNC: "CoP1 \<^bold>\ \ LNC \<^bold>\" using CoP1_def ECQm_def LNC_def Cl_fr_def Disj_I ECQm_def unfolding conn by smt +lemma DNI_LNC: "Fr_1b \ \ DNI \<^bold>\ \ LNC \<^bold>\" by (simp add: CoP1_LNC DNI_CoP1) + +text\\noindent{The following variants of modus tollens also obtain.}\ +lemma MT: "Fr_1 \ \ Fr_2 \ \ Fr_3 \ \ \a b. (a \<^bold>\ b) \<^bold>\ \<^bold>\b \<^bold>\ \<^bold>\a" using Cl_fr_def Fr_2_def IC_imp Int_fr_def unfolding conn by metis +lemma MT': "Fr_1 \ \ Fr_2 \ \ Fr_3 \ \ \a b. ((a \<^bold>\ b) \<^bold>\ \<^bold>\b) \<^bold>\ \<^bold>\a \<^bold>\ \<^bold>\" by (simp add: DTw2 MT) + +text\\noindent{We now semantically characterize (an approximation of) Johansson's Minimal Logic along with some +exemplary 'subminimal' logics (observing that many more are possible). We check some relevant properties.}\ +abbreviation "JML \ \ \ \ DNI \<^bold>\" +abbreviation "SML1 \ \ \" (*Fr_1 \ \ Fr_2 \ \ Fr_3 \ \ Fr_4 \*) +abbreviation "SML2 \ Fr_1 \ \ Fr_2 \ \ Fr_3 \" +abbreviation "SML3 \ Fr_1 \" +abbreviation "SML4 \ Fr_1b \" + +text\\noindent{TND:}\ +lemma "JML \ TND \<^bold>\" nitpick oops (*counterexample found*) +lemma "JML \ TNDw \<^bold>\" nitpick oops +lemma "JML \ TNDm \<^bold>\" nitpick oops + +text\\noindent{ECQ:}\ +lemma "JML \ ECQ \<^bold>\" nitpick oops +lemma "ECQw \<^bold>\" using Cl_fr_def Disj_I ECQw_def unfolding conn by auto +lemma "ECQm \<^bold>\" using Cl_fr_def Disj_I ECQm_def unfolding conn by auto + +text\\noindent{LNC:}\ +lemma "JML \ LNC \<^bold>\" using DNI_LNC PF1 by blast +lemma "SML1 \ LNC \<^bold>\" nitpick oops + +text\\noindent{(r)DNI/DNE:}\ +lemma "JML \ DNI \<^bold>\" using CoP1_def2 by blast +lemma "SML1 \ rDNI \<^bold>\" nitpick oops +lemma "JML \ rDNE \<^bold>\" nitpick oops + +text\\noindent{CoP/MT:}\ +lemma "SML4 \ CoPw \<^bold>\" unfolding Defs by (smt Cl_fr_def MONO_def monI conn) +lemma "JML \ CoP1 \<^bold>\" using DNI_CoP1 PF1 by blast +lemma "SML1 \ MT1 \<^bold>\" nitpick oops +lemma "JML \ MT2 \<^bold>\" nitpick oops +lemma "JML \ MT3 \<^bold>\" nitpick oops + +text\\noindent{XCoP:}\ +lemma "JML \ XCoP \<^bold>\" nitpick oops + +text\\noindent{DM3/4:}\ +lemma "JML \ DM3 \<^bold>\" nitpick oops +lemma "SML3 \ DM4 \<^bold>\" by (simp add: DM4 PF1) +lemma "SML4 \ DM4 \<^bold>\" nitpick oops + +text\\noindent{nNor/nDNor:}\ +lemma "SML2 \ nNor \<^bold>\" using Cl_fr_def nNor_I nNor_def unfolding conn by auto +lemma "SML3 \ nNor \<^bold>\" nitpick oops +lemma "JML \ nDNor \<^bold>\" nitpick oops + +text\\noindent{lCoP classical:}\ +lemma "JML \ lCoPw(\<^bold>\) \<^bold>\" nitpick oops +lemma "JML \ lCoP1(\<^bold>\) \<^bold>\" nitpick oops +lemma "JML \ lCoP2(\<^bold>\) \<^bold>\" nitpick oops +lemma "JML \ lCoP3(\<^bold>\) \<^bold>\" nitpick oops + +text\\noindent{DS classical:}\ +lemma "JML \ DS1(\<^bold>\) \<^bold>\" nitpick oops +lemma "JML \ DS2(\<^bold>\) \<^bold>\" nitpick oops + +text\\noindent{lCoP strict:}\ +lemma "SML1 \ lCoPw(\<^bold>\) \<^bold>\" using lCoPw by blast +lemma "SML2 \ lCoPw(\<^bold>\) \<^bold>\" nitpick oops +lemma "JML \ lCoP1(\<^bold>\) \<^bold>\" using CoP1_def2 DNI_lCoP1 by blast +lemma "SML1 \ lCoP1(\<^bold>\) \<^bold>\" nitpick oops +lemma "JML \ lCoP2(\<^bold>\) \<^bold>\" nitpick oops +lemma "JML \ lCoP3(\<^bold>\) \<^bold>\" nitpick oops + +text\\noindent{lMT strict:}\ +lemma "SML2 \ lMT0(\<^bold>\) \<^bold>\" unfolding Defs using MT by auto +lemma "SML3 \ lMT0(\<^bold>\) \<^bold>\" (*nitpick*) oops (*no countermodel found*) +lemma "SML4 \ lMT0(\<^bold>\) \<^bold>\" nitpick oops +lemma "JML \ lMT1(\<^bold>\) \<^bold>\" by (smt DNI_lCoP1 DT1 lCoP1_def lMT1_def) +lemma "SML1 \ lMT1(\<^bold>\) \<^bold>\" nitpick oops +lemma "JML \ lMT2(\<^bold>\) \<^bold>\" nitpick oops +lemma "JML \ lMT3(\<^bold>\) \<^bold>\" nitpick oops + +text\\noindent{DS strict:}\ +lemma "JML \ DS1(\<^bold>\) \<^bold>\" nitpick oops +lemma "JML \ DS2(\<^bold>\) \<^bold>\" nitpick oops +lemma "JML \ DS3(\<^bold>\) \<^bold>\" nitpick oops +lemma "JML \ DS4(\<^bold>\) \<^bold>\" nitpick oops + +end diff --git a/thys/Topological_Semantics/sse_boolean_algebra.thy b/thys/Topological_Semantics/sse_boolean_algebra.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/sse_boolean_algebra.thy @@ -0,0 +1,155 @@ +theory sse_boolean_algebra + imports Main +begin + +declare[[syntax_ambiguity_warning=false]] +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +section \Shallow embedding of a Boolean algebra of propositions\ + +text\\noindent{In this section we present a shallow semantical embedding (SSE, cf. @{cite J41} and @{cite J23}) +for a family of logics whose semantics is based upon extensions of (complete and atomic) Boolean algebras. +The range of such logics is indeed very wide, including, as we will see, quantified paraconsistent and +paracomplete (e.g. intuitionistic) logics. Aside from illustrating how the SSE approach works in practice +we show how it allows us to effectively harness theorem provers, model finders and `hammers' for reasoning +with quantified non-classical logics. Proof reconstructions have deliberately been avoided. +Most of the proofs (in fact, all one-liners) have been found using Sledgehammer.}\ + +text\\noindent{Two notions play a fundamental role in this work: propositions and propositional functions. +Propositions, qua sentence denotations, are modeled as objects of type @{text "w\bool"} (shortened as @{text "\"}). +Propositional functions, as the name indicates, are basically anything with a (parametric) type @{text "'t\\"}.}\ + +text\\noindent{We introduce a type @{text "w"} for the domain of points (aka. 'worlds', 'states', etc.). +@{text "\"} is a type alias for sets of points (i.e. propositions) encoded as characteristic functions.}\ +typedecl w +type_synonym \ = "w\bool" + +text\\noindent{In the sequel, we introduce the following naming convention for variables: + +(i) Latin letters (A, b, M, P, q, X, y, etc.) denote in general propositions (type @{text "\"}); +however, we reserve letters D and S to denote sets of propositions (aka. domains/spaces) and +the letters u, v and w to denote worlds/points. + +(ii) Greek letters (in particular @{text "\"}) denote propositional functions (type @{text "'t\\"}); +among the latter we may employ the letters @{text "\"}, @{text "\"} and @{text "\"} to explicitly +name those corresponding to unary connectives/operations (type @{text "\\\"}).}\ + +subsection \Encoding Boolean operations\ + +text\\noindent{We start with an ordered algebra,}\ +abbreviation sequ::"\\\\bool" (infixr "\<^bold>\" 45) where "A \<^bold>\ B \ \w. (A w) \ (B w)" +abbreviation subs::"\\\\bool" (infixr "\<^bold>\" 45) where "A \<^bold>\ B \ \w. (A w) \ (B w)" +abbreviation sups::"\\\\bool" (infixr "\<^bold>\" 45) where "B \<^bold>\ A \ A \<^bold>\ B" + +text\\noindent{define meet and join by reusing HOL metalogical conjunction and disjunction,}\ +definition meet::"\\\\\" (infixr "\<^bold>\" 54) where "A \<^bold>\ B \ \w. (A w) \ (B w)" +definition join::"\\\\\" (infixr "\<^bold>\" 53) where "A \<^bold>\ B \ \w. (A w) \ (B w)" + +text\\noindent{and introduce further operations to obtain a Boolean 'algebra of propositions'.}\ +definition top::"\" ("\<^bold>\") where "\<^bold>\ \ \w. True" +definition bottom::"\" ("\<^bold>\") where "\<^bold>\ \ \w. False" +definition impl::"\\\\\" (infixr "\<^bold>\" 51) where "A \<^bold>\ B \ \w. (A w)\(B w)" +definition dimp::"\\\\\" (infixr "\<^bold>\" 51) where "A \<^bold>\ B \ \w. (A w)\(B w)" +definition diff::"\\\\\" (infixr "\<^bold>\" 51) where "A \<^bold>\ B \ \w. (A w) \ \(B w)" +definition compl::"\\\" ("\<^bold>\_" [57]58) where "\<^bold>\A \ \w. \(A w)" + +named_theorems conn (*algebraic connectives*) +declare meet_def[conn] join_def[conn] top_def[conn] bottom_def[conn] + impl_def[conn] dimp_def[conn] diff_def[conn] compl_def[conn] + +text\\noindent{Quite trivially, we can verify that the algebra satisfies some essential lattice properties.}\ +lemma "a \<^bold>\ a \<^bold>\ a" unfolding conn by simp +lemma "a \<^bold>\ a \<^bold>\ a" unfolding conn by simp +lemma "a \<^bold>\ a \<^bold>\ b" unfolding conn by simp +lemma "a \<^bold>\ b \<^bold>\ a" unfolding conn by simp +lemma "(a \<^bold>\ b) \<^bold>\ b \<^bold>\ b" unfolding conn by auto (*absorption 1*) +lemma "a \<^bold>\ (a \<^bold>\ b) \<^bold>\ a" unfolding conn by auto (*absorption 2*) +lemma "a \<^bold>\ c \ b \<^bold>\ c \ a \<^bold>\ b \<^bold>\ c" unfolding conn by simp +lemma "c \<^bold>\ a \ c \<^bold>\ b \ c \<^bold>\ a \<^bold>\ b" unfolding conn by simp +lemma "a \<^bold>\ b \ (a \<^bold>\ b) \<^bold>\ b" unfolding conn by smt +lemma "b \<^bold>\ a \ (a \<^bold>\ b) \<^bold>\ b" unfolding conn by smt +lemma "a \<^bold>\ c \ b \<^bold>\ d \ (a \<^bold>\ b) \<^bold>\ (c \<^bold>\ d)" unfolding conn by simp +lemma "a \<^bold>\ c \ b \<^bold>\ d \ (a \<^bold>\ b) \<^bold>\ (c \<^bold>\ d)" unfolding conn by simp + + +subsection \Second-order operations and fixed-points\ + +text\\noindent{We define equality for propositional functions as follows.}\ +definition equal_op::"('t\\)\('t\\)\bool" (infix "\<^bold>\" 60) where "\ \<^bold>\ \ \ \X. \ X \<^bold>\ \ X" + +text\\noindent{Moreover, we define some useful Boolean (2nd-order) operations on propositional functions,}\ +abbreviation unionOp::"('t\\)\('t\\)\('t\\)" (infixr "\<^bold>\" 61) where "\ \<^bold>\ \ \ \X. \ X \<^bold>\ \ X" +abbreviation interOp::"('t\\)\('t\\)\('t\\)" (infixr "\<^bold>\" 62) where "\ \<^bold>\ \ \ \X. \ X \<^bold>\ \ X" +abbreviation compOp::"('t\\)\('t\\)" ("(_\<^sup>c)") where "\\<^sup>c \ \X. \<^bold>\\ X" +text\\noindent{some of them explicitly targeting operations,}\ +definition dual::"(\\\)\(\\\)" ("(_\<^sup>d)") where "\\<^sup>d \ \X. \<^bold>\(\(\<^bold>\X))" +text\\noindent{and also define an useful operation (for technical purposes).}\ +definition id::"\\\" ("id") where "id A \ A" + +text\\noindent{We now prove some useful lemmas (some of them may help the provers in their hard work).}\ +lemma comp_symm: "\\<^sup>c = \ \ \ = \\<^sup>c" unfolding conn by blast +lemma comp_invol: "\\<^sup>c\<^sup>c = \" unfolding conn by blast +lemma dual_symm: "(\ \ \\<^sup>d) \ (\ \ \\<^sup>d)" unfolding dual_def conn by simp +lemma dual_comp: "\\<^sup>d\<^sup>c = \\<^sup>c\<^sup>d" unfolding dual_def by simp + +lemma "id\<^sup>d \<^bold>\ id" by (simp add: id_def dual_def equal_op_def conn) +lemma "id\<^sup>c \<^bold>\ compl" by (simp add: id_def dual_def equal_op_def conn) +lemma "(A \<^bold>\ B)\<^sup>d \<^bold>\ (A\<^sup>d) \<^bold>\ (B\<^sup>d)" by (simp add: dual_def equal_op_def conn) +lemma "(A \<^bold>\ B)\<^sup>c \<^bold>\ (A\<^sup>c) \<^bold>\ (B\<^sup>c)" by (simp add: equal_op_def conn) +lemma "(A \<^bold>\ B)\<^sup>d \<^bold>\ (A\<^sup>d) \<^bold>\ (B\<^sup>d)" by (simp add: dual_def equal_op_def conn) +lemma "(A \<^bold>\ B)\<^sup>c \<^bold>\ (A\<^sup>c) \<^bold>\ (B\<^sup>c)" by (simp add: equal_op_def conn) + +text\\noindent{The notion of a fixed point is a fundamental one. We speak of propositions being fixed points of +operations. For a given operation we define in the usual way a fixed-point predicate for propositions.}\ +abbreviation fixedpoint::"(\\\)\(\\bool)" ("fp") where "fp \ \ \X. \ X \<^bold>\ X" + +lemma fp_d: "(fp \\<^sup>d) X = (fp \)(\<^bold>\X)" unfolding dual_def conn by auto +lemma fp_c: "(fp \\<^sup>c) X = (X \<^bold>\ \<^bold>\(\ X))" unfolding conn by auto +lemma fp_dc:"(fp \\<^sup>d\<^sup>c) X = (X \<^bold>\ \(\<^bold>\X))" unfolding dual_def conn by auto + +text\\noindent{Indeed, we can 'operationalize' this predicate by defining a fixed-point operator as follows:}\ +abbreviation fixedpoint_op::"(\\\)\(\\\)" ("(_\<^sup>f\<^sup>p)") where "\\<^sup>f\<^sup>p \ \X. (\ X) \<^bold>\ X" + +lemma ofp_c: "(\\<^sup>c)\<^sup>f\<^sup>p \<^bold>\ (\\<^sup>f\<^sup>p)\<^sup>c" unfolding conn equal_op_def by auto +lemma ofp_d: "(\\<^sup>d)\<^sup>f\<^sup>p \<^bold>\ (\\<^sup>f\<^sup>p)\<^sup>d\<^sup>c" unfolding dual_def equal_op_def conn by auto +lemma ofp_dc:"(\\<^sup>d\<^sup>c)\<^sup>f\<^sup>p \<^bold>\ (\\<^sup>f\<^sup>p)\<^sup>d" unfolding dual_def equal_op_def conn by auto +lemma ofp_decomp: "\\<^sup>f\<^sup>p \<^bold>\ (id \<^bold>\ \) \<^bold>\ ((id \<^bold>\ \)\<^sup>c)" unfolding equal_op_def id_def conn by auto +lemma ofp_invol: "(\\<^sup>f\<^sup>p)\<^sup>f\<^sup>p \<^bold>\ \" unfolding conn equal_op_def by auto + +text\\noindent{Fixed-point predicate and fixed-point operator are closely related.}\ +lemma fp_rel: "((fp \) X) = (\\<^sup>f\<^sup>p X \<^bold>\ \<^bold>\)" unfolding conn by auto +lemma fp_d_rel: "((fp \\<^sup>d) X) = (\\<^sup>f\<^sup>p(\<^bold>\X) \<^bold>\ \<^bold>\)" unfolding dual_def conn by auto +lemma fp_c_rel: "((fp \\<^sup>c) X) = (\\<^sup>f\<^sup>p X \<^bold>\ \<^bold>\)" unfolding conn by auto +lemma fp_dc_rel: "((fp \\<^sup>d\<^sup>c) X) = (\\<^sup>f\<^sup>p(\<^bold>\X) \<^bold>\ \<^bold>\)" unfolding dual_def conn by auto + + +subsection \Equality and atomicity\ + +text\\noindent{We prove some facts about equality (which may help improve prover's performance).}\ +lemma eq_ext: "a \<^bold>\ b \ a = b" using ext by blast +lemma eq_ext': "a \<^bold>\ b \ a = b" using ext unfolding equal_op_def by blast +lemma meet_char: "a \<^bold>\ b \ a \<^bold>\ b \<^bold>\ a" unfolding conn by blast +lemma join_char: "a \<^bold>\ b \ a \<^bold>\ b \<^bold>\ b" unfolding conn by blast + +text\\noindent{We can verify indeed that the algebra is atomic (in three different ways) by relying on the +presence of primitive equality in HOL. A more general class of Boolean algebras could in principle +be obtained in systems without primitive equality or by suitably restricting quantification over +propositions (e.g. defining a topology and restricting quantifiers to open/closed sets).}\ +definition "atom a \ \(a \<^bold>\ \<^bold>\) \ (\p. a \<^bold>\ p \ a \<^bold>\ \<^bold>\p)" +lemma atomic1: "\w. \q. q w \ (\p. p w \ q \<^bold>\ p)" using the_sym_eq_trivial by (metis (full_types)) +lemma atomic2: "\w. \q. q w \ atom(q)" using the_sym_eq_trivial by (metis (full_types) atom_def compl_def bottom_def) +lemma atomic3: "\p. \(p \<^bold>\ \<^bold>\) \ (\q. atom(q) \ q \<^bold>\ p)" proof - (*using atom_def unfolding conn by fastforce*) + { fix p + { assume "\(p \<^bold>\ \<^bold>\)" + hence "\v. p v" unfolding conn by simp + then obtain w where 1:"p w" by (rule exE) + let ?q="\v. v = w" (*using HOL primitive equality*) + have 2: "atom ?q" unfolding atom_def unfolding conn by simp + have "\v. ?q v \ p v" using 1 by simp + hence 3: "?q \<^bold>\ p" by simp + from 2 3 have "\q. atom(q) \ q \<^bold>\ p" by blast + } hence "\(p \<^bold>\ \<^bold>\) \ (\q. atom(q) \ q \<^bold>\ p)" by (rule impI) + } thus ?thesis by (rule allI) +qed + +end diff --git a/thys/Topological_Semantics/sse_boolean_algebra_quantification.thy b/thys/Topological_Semantics/sse_boolean_algebra_quantification.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/sse_boolean_algebra_quantification.thy @@ -0,0 +1,170 @@ +theory sse_boolean_algebra_quantification + imports sse_boolean_algebra +begin +hide_const(open) List.list.Nil no_notation List.list.Nil ("[]") (*We have no use for lists... *) +hide_const(open) Relation.converse no_notation Relation.converse ("(_\)" [1000] 999) (*..nor for relations in this work*) +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + + +subsection \Obtaining a complete Boolean Algebra\ + +text\\noindent{Our aim is to obtain a complete Boolean algebra which we can use to interpret +quantified formulas (in the spirit of Boolean-valued models for set theory).}\ + +text\\noindent{We start by defining infinite meet (infimum) and infinite join (supremum) operations,}\ +definition infimum:: "(\\bool)\\" ("\<^bold>\_") where "\<^bold>\S \ \w. \X. S X \ X w" +definition supremum::"(\\bool)\\" ("\<^bold>\_") where "\<^bold>\S \ \w. \X. S X \ X w" + +text\\noindent{and show that the corresponding lattice is complete.}\ +abbreviation "upper_bound U S \ \X. (S X) \ X \<^bold>\ U" +abbreviation "lower_bound L S \ \X. (S X) \ L \<^bold>\ X" +abbreviation "is_supremum U S \ upper_bound U S \ (\X. upper_bound X S \ U \<^bold>\ X)" +abbreviation "is_infimum L S \ lower_bound L S \ (\X. lower_bound X S \ X \<^bold>\ L)" + +lemma sup_char: "is_supremum \<^bold>\S S" unfolding supremum_def by auto +lemma sup_ext: "\S. \X. is_supremum X S" by (metis supremum_def) +lemma inf_char: "is_infimum \<^bold>\S S" unfolding infimum_def by auto +lemma inf_ext: "\S. \X. is_infimum X S" by (metis infimum_def) + +text\\noindent{We can check that being closed under supremum/infimum entails being closed under join/meet.}\ +abbreviation "meet_closed S \ \X Y. (S X \ S Y) \ S(X \<^bold>\ Y)" +abbreviation "join_closed S \ \X Y. (S X \ S Y) \ S(X \<^bold>\ Y)" + +abbreviation "nonEmpty S \ \x. S x" +abbreviation "contains S D \ \X. D X \ S X" +abbreviation "infimum_closed S \ \D. nonEmpty D \ contains S D \ S(\<^bold>\D)" +abbreviation "supremum_closed S \ \D. nonEmpty D \ contains S D \ S(\<^bold>\D)" + +lemma inf_meet_closed: "\S. infimum_closed S \ meet_closed S" proof - + { fix S + { assume inf_closed: "infimum_closed S" + hence "meet_closed S" proof - + { fix X::"\" and Y::"\" + let ?D="\Z. Z=X \ Z=Y" + { assume "S X \ S Y" + hence "contains S ?D" by simp + moreover have "nonEmpty ?D" by auto + ultimately have "S(\<^bold>\?D)" using inf_closed by simp + hence "S(\w. \Z. (Z=X \ Z=Y) \ Z w)" unfolding infimum_def by simp + moreover have "(\w. \Z. (Z=X \ Z=Y) \ Z w) = (\w. X w \ Y w)" by auto + ultimately have "S(\w. X w \ Y w)" by simp + } hence "(S X \ S Y) \ S(X \<^bold>\ Y)" unfolding conn by (rule impI) + } thus ?thesis by simp qed + } hence "infimum_closed S \ meet_closed S" by simp + } thus ?thesis by (rule allI) +qed +lemma sup_join_closed: "\P. supremum_closed P \ join_closed P" proof - + { fix S + { assume sup_closed: "supremum_closed S" + hence "join_closed S" proof - + { fix X::"\" and Y::"\" + let ?D="\Z. Z=X \ Z=Y" + { assume "S X \ S Y" + hence "contains S ?D" by simp + moreover have "nonEmpty ?D" by auto + ultimately have "S(\<^bold>\?D)" using sup_closed by simp + hence "S(\w. \Z. (Z=X \ Z=Y) \ Z w)" unfolding supremum_def by simp + moreover have "(\w. \Z. (Z=X \ Z=Y) \ Z w) = (\w. X w \ Y w)" by auto + ultimately have "S(\w. X w \ Y w)" by simp + } hence "(S X \ S Y) \ S(X \<^bold>\ Y)" unfolding conn by (rule impI) + } thus ?thesis by simp qed + } hence "supremum_closed S \ join_closed S" by simp + } thus ?thesis by (rule allI) +qed + + +subsection \Adding quantifiers (restricted and unrestricted)\ + +text\\noindent{We can harness HOL to define quantification over individuals of arbitrary type (using polymorphism). +These (unrestricted) quantifiers take a propositional function and give a proposition.}\ +abbreviation mforall::"('t\\)\\" ("\<^bold>\_" [55]56) where "\<^bold>\\ \ \w. \X. (\ X) w" +abbreviation mexists::"('t\\)\\" ("\<^bold>\_" [55]56) where "\<^bold>\\ \ \w. \X. (\ X) w" +text\\noindent{To improve readability, we introduce for them an useful binder notation.}\ +abbreviation mforallB (binder"\<^bold>\"[55]56) where "\<^bold>\X. \ X \ \<^bold>\\" +abbreviation mexistsB (binder"\<^bold>\"[55]56) where "\<^bold>\X. \ X \ \<^bold>\\" + +(*TODO: is it possible to also add binder notation to the ones below?*) +text\\noindent{Moreover, we define restricted quantifiers which take a 'functional domain' as additional parameter. +The latter is a propositional function that maps each element 'e' to the proposition 'e exists'.}\ +abbreviation mforall_restr::"('t\\)\('t\\)\\" ("\<^bold>\\<^sup>R(_)_") where "\<^bold>\\<^sup>R(\)\ \ \w.\X. (\ X) w \ (\ X) w" +abbreviation mexists_restr::"('t\\)\('t\\)\\" ("\<^bold>\\<^sup>R(_)_") where "\<^bold>\\<^sup>R(\)\ \ \w.\X. (\ X) w \ (\ X) w" + + +subsection \Relating quantifiers with further operators\ + +text\\noindent{The following 'type-lifting' function is useful for converting sets into 'rigid' propositional functions.}\ +abbreviation lift_conv::"('t\bool)\('t\\)" ("\_\") where "\S\ \ \X. \w. S X" + +text\\noindent{We introduce an useful operator: the range of a propositional function (resp. restricted over a domain),}\ +definition pfunRange::"('t\\)\(\\bool)" ("Ra(_)") where "Ra(\) \ \Y. \x. (\ x) = Y" +definition pfunRange_restr::"('t\\)\('t\bool)\(\\bool)" ("Ra[_|_]") where "Ra[\|D] \ \Y. \x. (D x) \ (\ x) = Y" + +text\\noindent{and check that taking infinite joins/meets (suprema/infima) over the range of a propositional function +can be equivalently codified by using quantifiers. This is a quite useful simplifying relationship.}\ +lemma Ra_all: "\<^bold>\Ra(\) = \<^bold>\\" by (metis (full_types) infimum_def pfunRange_def) +lemma Ra_ex: "\<^bold>\Ra(\) = \<^bold>\\" by (metis (full_types) pfunRange_def supremum_def) +lemma Ra_restr_all: "\<^bold>\Ra[\|D] = \<^bold>\\<^sup>R\D\\" by (metis (full_types) pfunRange_restr_def infimum_def) +lemma Ra_restr_ex: "\<^bold>\Ra[\|D] = \<^bold>\\<^sup>R\D\\" by (metis pfunRange_restr_def supremum_def) + +text\\noindent{We further introduce the positive (negative) restriction of a propositional function wrt. a domain,}\ +abbreviation pfunRestr_pos::"('t\\)\('t\\)\('t\\)" ("[_|_]\<^sup>P") where "[\|\]\<^sup>P \ \X. \w. (\ X) w \ (\ X) w" +abbreviation pfunRestr_neg::"('t\\)\('t\\)\('t\\)" ("[_|_]\<^sup>N") where "[\|\]\<^sup>N \ \X. \w. (\ X) w \ (\ X) w" + +text\\noindent{and check that some additional simplifying relationships obtain.}\ +lemma all_restr: "\<^bold>\\<^sup>R(\)\ = \<^bold>\[\|\]\<^sup>P" by simp +lemma ex_restr: "\<^bold>\\<^sup>R(\)\ = \<^bold>\[\|\]\<^sup>N" by simp +lemma Ra_all_restr: "\<^bold>\Ra[\|D] = \<^bold>\[\|\D\]\<^sup>P" using Ra_restr_all by blast +lemma Ra_ex_restr: "\<^bold>\Ra[\|D] = \<^bold>\[\|\D\]\<^sup>N" by (simp add: Ra_restr_ex) + +text\\noindent{Observe that using these operators has the advantage of allowing for binder notation,}\ +lemma "\<^bold>\X. [\|\]\<^sup>P X = \<^bold>\[\|\]\<^sup>P" by simp +lemma "\<^bold>\X. [\|\]\<^sup>N X = \<^bold>\[\|\]\<^sup>N" by simp + +text\\noindent{noting that extra care should be taken when working with complements or negations; +always remember to switch P/N (positive/negative restriction) accordingly.}\ +lemma "\<^bold>\\<^sup>R(\)\ = \<^bold>\X. [\|\]\<^sup>P X" by simp +lemma "\<^bold>\\<^sup>R(\)\\<^sup>c = \<^bold>\X. \<^bold>\[\|\]\<^sup>N X" by (simp add: compl_def) +lemma "\<^bold>\\<^sup>R(\)\ = \<^bold>\X. [\|\]\<^sup>N X" by simp +lemma "\<^bold>\\<^sup>R(\)\\<^sup>c = \<^bold>\X. \<^bold>\[\|\]\<^sup>P X" by (simp add: compl_def) + +text\\noindent{The previous definitions allow us to nicely characterize the interaction +between function composition and (restricted) quantification:}\ +lemma Ra_all_comp1: "\<^bold>\(\\\) = \<^bold>\[\|\Ra \\]\<^sup>P" by (metis comp_apply pfunRange_def) +lemma Ra_all_comp2: "\<^bold>\(\\\) = \<^bold>\\<^sup>R\Ra \\ \" by (metis comp_apply pfunRange_def) +lemma Ra_ex_comp1: "\<^bold>\(\\\) = \<^bold>\[\|\Ra \\]\<^sup>N" by (metis comp_apply pfunRange_def) +lemma Ra_ex_comp2: "\<^bold>\(\\\) = \<^bold>\\<^sup>R\Ra \\ \" by (metis comp_apply pfunRange_def) + +text\\noindent{This useful operator returns for a given domain of propositions the domain of their complements:}\ +definition dom_compl::"(\\bool)\(\\bool)" ("(_\)") where "D\ \ \X. \Y. (D Y) \ (X = \<^bold>\Y)" +lemma dom_compl_def2: "D\ = (\X. D(\<^bold>\X))" unfolding dom_compl_def by (metis comp_symm fun_upd_same) +lemma dom_compl_invol: "D = (D\)\" unfolding dom_compl_def by (metis comp_symm fun_upd_same) + +text\\noindent{We can now check an infinite variant of the De Morgan laws,}\ +lemma iDM_a: "\<^bold>\(\<^bold>\S) = \<^bold>\S\" unfolding dom_compl_def2 infimum_def supremum_def using compl_def by force +lemma iDM_b:" \<^bold>\(\<^bold>\S) = \<^bold>\S\" unfolding dom_compl_def2 infimum_def supremum_def using compl_def by force + +text\\noindent{and some useful dualities regarding the range of propositional functions (restricted wrt. a domain).}\ +lemma Ra_compl: "Ra[\\<^sup>c|D] = Ra[\|D]\" unfolding pfunRange_restr_def dom_compl_def by auto +lemma Ra_dual1: "Ra[\\<^sup>d|D] = Ra[\|D\]\" unfolding pfunRange_restr_def dom_compl_def using dual_def by auto +lemma Ra_dual2: "Ra[\\<^sup>d|D] = Ra[\\<^sup>c|D\]" unfolding pfunRange_restr_def dom_compl_def using dual_def by auto +lemma Ra_dual3: "Ra[\\<^sup>d|D]\ = Ra[\|D\]" unfolding pfunRange_restr_def dom_compl_def using dual_def comp_symm by metis +lemma Ra_dual4: "Ra[\\<^sup>d|D\] = Ra[\|D]\" using Ra_dual3 dual_symm by metis + +text\\noindent{Finally, we check some facts concerning duality for quantifiers.}\ +lemma "\<^bold>\\\<^sup>c = \<^bold>\(\<^bold>\\)" using compl_def by auto +lemma "\<^bold>\\\<^sup>c = \<^bold>\(\<^bold>\\)" using compl_def by auto +lemma "\<^bold>\X. \<^bold>\\ X = \<^bold>\(\<^bold>\X. \ X)" using compl_def by auto +lemma "\<^bold>\X. \<^bold>\\ X = \<^bold>\(\<^bold>\X. \ X)" using compl_def by auto + +lemma "\<^bold>\\<^sup>R(\)\\<^sup>c = \<^bold>\(\<^bold>\\<^sup>R(\)\)" using compl_def by auto +lemma "\<^bold>\\<^sup>R(\)\\<^sup>c = \<^bold>\(\<^bold>\\<^sup>R(\)\)" using compl_def by auto +lemma "\<^bold>\X. \<^bold>\[\|\]\<^sup>P X = \<^bold>\(\<^bold>\X. [\|\]\<^sup>P X)" using compl_def by auto +lemma "\<^bold>\X. \<^bold>\[\|\]\<^sup>P X = \<^bold>\(\<^bold>\X. [\|\]\<^sup>P X)" using compl_def by auto +lemma "\<^bold>\X. \<^bold>\[\|\]\<^sup>N X = \<^bold>\(\<^bold>\X. [\|\]\<^sup>N X)" using compl_def by auto +lemma "\<^bold>\X. \<^bold>\[\|\]\<^sup>N X = \<^bold>\(\<^bold>\X. [\|\]\<^sup>N X)" using compl_def by auto + +text\\noindent{Warning: Do not switch P and N when passing to the dual form.}\ +lemma "\<^bold>\X. [\|\]\<^sup>P X = \<^bold>\(\<^bold>\X. \<^bold>\[\|\]\<^sup>N X)" nitpick oops \\ wrong: counterexample \ +lemma "\<^bold>\X. [\|\]\<^sup>P X = \<^bold>\(\<^bold>\X. \<^bold>\[\|\]\<^sup>P X)" using compl_def by auto \\ correct \ + +end diff --git a/thys/Topological_Semantics/sse_operation_negative.thy b/thys/Topological_Semantics/sse_operation_negative.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/sse_operation_negative.thy @@ -0,0 +1,391 @@ +theory sse_operation_negative + imports sse_boolean_algebra +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +section \Negative semantic conditions for operations\ + +text\\noindent{We define and interrelate some conditions on operations (i.e. propositional functions of type +@{text "\\\"}), this time involving negative-like properties.}\ + +named_theorems Defs + +subsection \Definitions and interrelations (finitary case)\ + +subsubsection \Principles of excluded middle, contradiction and explosion\ + +text\\noindent{TND: tertium non datur, aka. law of excluded middle (resp. strong, weak, minimal).}\ +abbreviation pTND ("TND\<^sup>_ _") where "TND\<^sup>a \ \ \<^bold>\ \<^bold>\ a \<^bold>\ (\ a)" +abbreviation pTNDw ("TNDw\<^sup>_ _") where "TNDw\<^sup>a \ \ \b. (\ b) \<^bold>\ a \<^bold>\ (\ a)" +abbreviation pTNDm ("TNDm\<^sup>_ _") where "TNDm\<^sup>a \ \ (\ \<^bold>\) \<^bold>\ a \<^bold>\ (\ a)" +definition "TND \ \ \\. TND\<^sup>\ \" +definition "TNDw \ \ \\. TNDw\<^sup>\ \" +definition "TNDm \ \ \\. TNDm\<^sup>\ \" +declare TND_def[Defs] TNDw_def[Defs] TNDm_def[Defs] + +text\\noindent{Explore some (non)entailment relations:}\ +lemma "TND \ \ TNDw \" unfolding Defs conn by simp +lemma "TNDw \ \ TND \" nitpick oops +lemma "TNDw \ \ TNDm \" unfolding Defs by simp +lemma "TNDm \ \ TNDw \" nitpick oops + +text\\noindent{ECQ: ex contradictione (sequitur) quodlibet (resp: strong, weak, minimal).}\ +abbreviation pECQ ("ECQ\<^sup>_ _") where "ECQ\<^sup>a \ \ a \<^bold>\ (\ a) \<^bold>\ \<^bold>\" +abbreviation pECQw ("ECQw\<^sup>_ _") where "ECQw\<^sup>a \ \ \b. a \<^bold>\ (\ a) \<^bold>\ (\ b)" +abbreviation pECQm ("ECQm\<^sup>_ _") where "ECQm\<^sup>a \ \ a \<^bold>\ (\ a) \<^bold>\ (\ \<^bold>\)" +definition "ECQ \ \ \a. ECQ\<^sup>a \" +definition "ECQw \ \ \a. ECQw\<^sup>a \" +definition "ECQm \ \ \a. ECQm\<^sup>a \" +declare ECQ_def[Defs] ECQw_def[Defs] ECQm_def[Defs] + +text\\noindent{Explore some (non)entailment relations:}\ +lemma "ECQ \ \ ECQw \" unfolding Defs conn by blast +lemma "ECQw \ \ ECQ \" nitpick oops +lemma "ECQw \ \ ECQm \" unfolding Defs conn by simp +lemma "ECQm \ \ ECQw \" nitpick oops + +text\\noindent{LNC: law of non-contradiction.}\ +abbreviation pLNC ("LNC\<^sup>_ _") where "LNC\<^sup>a \ \ \(a \<^bold>\ \ a) \<^bold>\ \<^bold>\" +definition "LNC \ \ \a. LNC\<^sup>a \" +declare LNC_def[Defs] + +text\\noindent{ECQ and LNC are in general independent.}\ +lemma "ECQ \ \ LNC \" nitpick oops +lemma "LNC \ \ ECQm \" nitpick oops + + +subsubsection \Contraposition rules\ + +text\\noindent{CoP: contraposition (global/rule variants, resp. weak, strong var. 1, strong var. 2, strong var. 3).}\ +abbreviation pCoPw ("CoPw\<^sup>_\<^sup>_ _") where "CoPw\<^sup>a\<^sup>b \ \ a \<^bold>\ b \ (\ b) \<^bold>\ (\ a)" +abbreviation pCoP1 ("CoP1\<^sup>_\<^sup>_ _") where "CoP1\<^sup>a\<^sup>b \ \ a \<^bold>\ (\ b) \ b \<^bold>\ (\ a)" +abbreviation pCoP2 ("CoP2\<^sup>_\<^sup>_ _") where "CoP2\<^sup>a\<^sup>b \ \ (\ a) \<^bold>\ b \ (\ b) \<^bold>\ a" +abbreviation pCoP3 ("CoP3\<^sup>_\<^sup>_ _") where "CoP3\<^sup>a\<^sup>b \ \ (\ a) \<^bold>\ (\ b) \ b \<^bold>\ a" +definition "CoPw \ \ \a b. CoPw\<^sup>a\<^sup>b \" +definition "CoP1 \ \ \a b. CoP1\<^sup>a\<^sup>b \" +definition "CoP1' \ \ \a b. a \<^bold>\ (\ b) \ b \<^bold>\ (\ a)" +definition "CoP2 \ \ \a b. CoP2\<^sup>a\<^sup>b \" +definition "CoP2' \ \ \a b. (\ a) \<^bold>\ b \ (\ b) \<^bold>\ a" +definition "CoP3 \ \ \a b. CoP3\<^sup>a\<^sup>b \" +declare CoPw_def[Defs] CoP1_def[Defs] CoP1'_def[Defs] + CoP2_def[Defs] CoP2'_def[Defs] CoP3_def[Defs] + +lemma CoP1_defs_rel: "CoP1 \ = CoP1' \" unfolding Defs by metis +lemma CoP2_defs_rel: "CoP2 \ = CoP2' \" unfolding Defs by metis + +text\\noindent{Explore some (non)entailment relations:}\ +lemma "CoP1 \ \ CoPw \" unfolding Defs by metis +lemma "CoPw \ \ CoP1 \" nitpick oops +lemma "CoP2 \ \ CoPw \" unfolding Defs by metis +lemma "CoPw \ \ CoP2 \" nitpick oops +lemma "CoP3 \ \ CoPw \" (*nitpick*) oops \\ no countermodel found so far \ +lemma "CoPw \ \ CoP3 \" nitpick oops + +text\\noindent{All three strong variants are pairwise independent. However, CoP3 follows from CoP1 plus CoP2.}\ +lemma CoP123: "CoP1 \ \ CoP2 \ \ CoP3 \" unfolding Defs by smt +text\\noindent{Taking all CoP together still leaves room for a boldly paraconsistent resp. paracomplete logic.}\ +lemma "CoP1 \ \ CoP2 \ \ ECQm \" nitpick oops +lemma "CoP1 \ \ CoP2 \ \ TNDm \" nitpick oops + + +subsubsection \Modus tollens rules\ + +text\\noindent{MT: modus (tollendo) tollens (global/rule variants).}\ +abbreviation pMT0 ("MT0\<^sup>_\<^sup>_ _") where "MT0\<^sup>a\<^sup>b \ \ a \<^bold>\ b \ (\ b) \<^bold>\ \<^bold>\ \ (\ a) \<^bold>\ \<^bold>\" +abbreviation pMT1 ("MT1\<^sup>_\<^sup>_ _") where "MT1\<^sup>a\<^sup>b \ \ a \<^bold>\ (\ b) \ b \<^bold>\ \<^bold>\ \ (\ a) \<^bold>\ \<^bold>\" +abbreviation pMT2 ("MT2\<^sup>_\<^sup>_ _") where "MT2\<^sup>a\<^sup>b \ \ (\ a) \<^bold>\ b \ (\ b) \<^bold>\ \<^bold>\ \ a \<^bold>\ \<^bold>\" +abbreviation pMT3 ("MT3\<^sup>_\<^sup>_ _") where "MT3\<^sup>a\<^sup>b \ \ (\ a) \<^bold>\ (\ b) \ b \<^bold>\ \<^bold>\ \ a \<^bold>\ \<^bold>\" +definition "MT0 \ \ \a b. MT0\<^sup>a\<^sup>b \" +definition "MT1 \ \ \a b. MT1\<^sup>a\<^sup>b \" +definition "MT2 \ \ \a b. MT2\<^sup>a\<^sup>b \" +definition "MT3 \ \ \a b. MT3\<^sup>a\<^sup>b \" +declare MT0_def[Defs] MT1_def[Defs] MT2_def[Defs] MT3_def[Defs] + +text\\noindent{Again, all MT variants are pairwise independent. We explore some (non)entailment relations:}\ +lemma "CoPw \ \ MT0 \" unfolding Defs by (metis top_def) +lemma "CoP1 \ \ MT1 \" unfolding Defs by (metis top_def) +lemma "CoP2 \ \ MT2 \" unfolding Defs by (metis top_def) +lemma "CoP3 \ \ MT3 \" unfolding Defs by (metis top_def) +lemma "MT0 \ \ MT1 \ \ MT2 \ \ MT3 \ \ CoPw \" nitpick oops +lemma "MT0 \ \ MT1 \ \ MT2 \ \ MT3 \ \ ECQm \" nitpick oops +lemma "MT0 \ \ MT1 \ \ MT2 \ \ MT3 \ \ TNDm \" nitpick oops +lemma MT123: "MT1 \ \ MT2 \ \ MT3 \" unfolding Defs by smt + + +subsubsection \Double negation introduction and elimination\ + +text\\noindent{DNI/DNE: double negation introduction/elimination (as axioms).}\ +abbreviation pDNI ("DNI\<^sup>_ _") where "DNI\<^sup>a \ \ a \<^bold>\ \ (\ a)" +abbreviation pDNE ("DNE\<^sup>_ _") where "DNE\<^sup>a \ \ \ (\ a) \<^bold>\ a" +definition "DNI \ \ \a. DNI\<^sup>a \" +definition "DNE \ \ \a. DNE\<^sup>a \" +declare DNI_def[Defs] DNE_def[Defs] + +text\\noindent{CoP1 (resp. CoP2) can alternatively be defined as CoPw plus DNI (resp. DNE).}\ +lemma "DNI \ \ CoP1 \" nitpick oops +lemma CoP1_def2: "CoP1 \ = (CoPw \ \ DNI \)" unfolding Defs by smt +lemma "DNE \ \ CoP2 \" nitpick oops +lemma CoP2_def2: "CoP2 \ = (CoPw \ \ DNE \)" unfolding Defs by smt + +text\\noindent{Explore some non-entailment relations:}\ +lemma "DNI \ \ DNE \ \ CoPw \" nitpick oops +lemma "DNI \ \ DNE \ \ TNDm \" nitpick oops +lemma "DNI \ \ DNE \ \ ECQm \" nitpick oops +lemma "DNI \ \ DNE \ \ MT0 \" nitpick oops +lemma "DNI \ \ DNE \ \ MT1 \" nitpick oops +lemma "DNI \ \ DNE \ \ MT2 \" nitpick oops +lemma "DNI \ \ DNE \ \ MT3 \" nitpick oops + +text\\noindent{DNI/DNE: double negation introduction/elimination (as rules).}\ +abbreviation prDNI ("rDNI\<^sup>_ _") where "rDNI\<^sup>a \ \ a \<^bold>\ \<^bold>\ \ \ (\ a) \<^bold>\ \<^bold>\" +abbreviation prDNE ("rDNE\<^sup>_ _") where "rDNE\<^sup>a \ \ \ (\ a) \<^bold>\ \<^bold>\ \ a \<^bold>\ \<^bold>\" +definition "rDNI \ \ \a. rDNI\<^sup>a \" +definition "rDNE \ \ \a. rDNE\<^sup>a \" +declare rDNI_def[Defs] rDNE_def[Defs] + +text\\noindent{The rule variants are strictly weaker than the axiom variants,}\ +lemma "DNI \ \ rDNI \" by (simp add: DNI_def rDNI_def top_def) +lemma "rDNI \ \ DNI \" nitpick oops +lemma "DNE \ \ rDNE \" by (metis DNE_def rDNE_def top_def) +lemma "rDNE \ \ DNE \" nitpick oops +text\\noindent{and follow already from modus tollens.}\ +lemma MT1_rDNI: "MT1 \ \ rDNI \" unfolding Defs by blast +lemma MT2_rDNE: "MT2 \ \ rDNE \" unfolding Defs by blast + + +subsubsection \Normality and its dual\ + +text\\noindent{n(D)Nor: negative (dual) 'normality'.}\ +definition "nNor \ \ (\ \<^bold>\) \<^bold>\ \<^bold>\" +definition "nDNor \ \ (\ \<^bold>\) \<^bold>\ \<^bold>\" +declare nNor_def[Defs] nDNor_def[Defs] + +text\\noindent{nNor (resp. nDNor) is entailed by CoP1 (resp. CoP2). }\ +lemma CoP1_Nor: "CoP1 \ \ nNor \" unfolding Defs conn by simp +lemma CoP2_DNor: "CoP2 \ \ nDNor \" unfolding Defs conn by fastforce +lemma "DNI \ \ nNor \" nitpick oops +lemma "DNE \ \ nDNor \" nitpick oops +text\\noindent{nNor and nDNor together entail the rule variant of DNI (rDNI).}\ +lemma nDNor_rDNI: "nNor \ \ nDNor \ \ rDNI \" unfolding Defs using nDNor_def nNor_def eq_ext by metis +lemma "nNor \ \ nDNor \ \ rDNE \" nitpick oops + + +subsubsection \De Morgan laws\ + +text\\noindent{DM: De Morgan laws.}\ +abbreviation pDM1 ("DM1\<^sup>_\<^sup>_ _") where "DM1\<^sup>a\<^sup>b \ \ \(a \<^bold>\ b) \<^bold>\ (\ a) \<^bold>\ (\ b)" +abbreviation pDM2 ("DM2\<^sup>_\<^sup>_ _") where "DM2\<^sup>a\<^sup>b \ \ (\ a) \<^bold>\ (\ b) \<^bold>\ \(a \<^bold>\ b)" +abbreviation pDM3 ("DM3\<^sup>_\<^sup>_ _") where "DM3\<^sup>a\<^sup>b \ \ \(a \<^bold>\ b) \<^bold>\ (\ a) \<^bold>\ (\ b)" +abbreviation pDM4 ("DM4\<^sup>_\<^sup>_ _") where "DM4\<^sup>a\<^sup>b \ \ (\ a) \<^bold>\ (\ b) \<^bold>\ \(a \<^bold>\ b)" +definition "DM1 \ \ \a b. DM1\<^sup>a\<^sup>b \" +definition "DM2 \ \ \a b. DM2\<^sup>a\<^sup>b \" +definition "DM3 \ \ \a b. DM3\<^sup>a\<^sup>b \" +definition "DM4 \ \ \a b. DM4\<^sup>a\<^sup>b \" +declare DM1_def[Defs] DM2_def[Defs] DM3_def[Defs] DM4_def[Defs] + +text\\noindent{CoPw, DM1 and DM2 are indeed equivalent.}\ +lemma DM1_CoPw: "DM1 \ = CoPw \" proof - + have LtoR: "DM1 \ \ CoPw \" proof - + assume dm1: "DM1 \" + { fix a b + { assume "a \<^bold>\ b" + hence 1: "a \<^bold>\ b \<^bold>\ b" unfolding conn by simp + have 2: "b \<^bold>\ a \<^bold>\ b" unfolding conn by simp + from 1 2 have "b = a \<^bold>\ b" using eq_ext by blast + hence 3: "\ b \<^bold>\ \ (a \<^bold>\ b)" by auto + from dm1 have "\(a \<^bold>\ b) \<^bold>\ (\ a) \<^bold>\ (\ b)" unfolding Defs by blast + hence 4: "(\ b) \<^bold>\ (\ a) \<^bold>\ (\ b)" using 3 by simp + have 5: "(\ a) \<^bold>\ (\ b) \<^bold>\ (\ a)" unfolding conn by simp + from 4 5 have "(\ b) \<^bold>\ (\ a)" by simp + } hence "a \<^bold>\ b \ (\ b) \<^bold>\ (\ a)" by (rule impI) + } thus ?thesis unfolding Defs by simp + qed + have RtoL: "CoPw \ \ DM1 \" unfolding Defs conn by (metis (no_types, lifting)) + thus ?thesis using LtoR RtoL by blast +qed +lemma DM2_CoPw: "DM2 \ = CoPw \" proof - + have LtoR: "DM2 \ \ CoPw \" proof - + assume dm2: "DM2 \" + { fix a b + { assume "a \<^bold>\ b" + hence 1: "a \<^bold>\ a \<^bold>\ b" unfolding conn by simp + have 2: "a \<^bold>\ b \<^bold>\ a" unfolding conn by simp + from 1 2 have "a = a \<^bold>\ b" using eq_ext by blast + hence 3: "\ a \<^bold>\ \ (a \<^bold>\ b)" by auto + from dm2 have "(\ a) \<^bold>\ (\ b) \<^bold>\ \(a \<^bold>\ b)" unfolding Defs by blast + hence 4: "(\ a) \<^bold>\ (\ b) \<^bold>\ (\ a) " using 3 by simp + have 5: "(\ b) \<^bold>\ (\ a) \<^bold>\ (\ b)" unfolding conn by simp + from 4 5 have "(\ b) \<^bold>\ (\ a)" by simp + } hence "a \<^bold>\ b \ (\ b) \<^bold>\ (\ a)" by (rule impI) + } thus ?thesis unfolding Defs by simp + qed + have RtoL: "CoPw \ \ DM2 \" unfolding Defs conn by (metis (no_types, lifting)) + thus ?thesis using LtoR RtoL by blast +qed +lemma DM12: "DM1 \ = DM2 \" by (simp add: DM1_CoPw DM2_CoPw) + +text\\noindent{DM3 (resp. DM4) are entailed by CoPw together with DNE (resp. DNI).}\ +lemma CoPw_DNE_DM3: "CoPw \ \ DNE \ \ DM3 \" proof - + assume copw: "CoPw \" and dne: "DNE \" + { fix a b + have "\(a) \<^bold>\ (\ a) \<^bold>\ (\ b)" unfolding conn by simp + hence "\(\(a) \<^bold>\ \(b)) \<^bold>\ \((\ a))" using CoPw_def copw by (metis (no_types, lifting)) + hence 1: "\(\(a) \<^bold>\ \(b)) \<^bold>\ a" using DNE_def dne by metis + have "\(b) \<^bold>\ (\ a) \<^bold>\ (\ b)" unfolding conn by simp + hence "\(\(a) \<^bold>\ \(b)) \<^bold>\ \((\ b))" using CoPw_def copw by (metis (no_types, lifting)) + hence 2: "\(\(a) \<^bold>\ \(b)) \<^bold>\ b" using DNE_def dne by metis + from 1 2 have "\(\(a) \<^bold>\ \(b)) \<^bold>\ a \<^bold>\ b" unfolding conn by simp + hence "\(a \<^bold>\ b) \<^bold>\ \(\(\(a) \<^bold>\ \(b)))" using CoPw_def copw by smt + hence "\(a \<^bold>\ b) \<^bold>\ (\ a) \<^bold>\ (\ b)" using DNE_def dne by metis + } thus ?thesis by (simp add: DM3_def) +qed +lemma CoPw_DNI_DM4: "CoPw \ \ DNI \ \ DM4 \" proof - + assume copw: "CoPw \" and dni: "DNI \" + { fix a b + have "(\ a) \<^bold>\ (\ b) \<^bold>\ \(a)" unfolding conn by simp + hence "\((\ a)) \<^bold>\ \(\(a) \<^bold>\ \(b))" using CoPw_def copw by (metis (no_types, lifting)) + hence 1: "a \<^bold>\ \(\(a) \<^bold>\ \(b))" using DNI_def dni by metis + have "(\ a) \<^bold>\ (\ b) \<^bold>\ \(b)" unfolding conn by simp + hence "\((\ b)) \<^bold>\ \(\(a) \<^bold>\ \(b))" using CoPw_def copw by (metis (no_types, lifting)) + hence 2: "b \<^bold>\ \(\(a) \<^bold>\ \(b))" using DNI_def dni by metis + from 1 2 have "a \<^bold>\ b \<^bold>\ \(\(a) \<^bold>\ \(b))" unfolding conn by simp + hence "\(\(\(a) \<^bold>\ \(b))) \<^bold>\ \(a \<^bold>\ b)" using CoPw_def copw by auto + hence "\(a) \<^bold>\ \(b) \<^bold>\ \(a \<^bold>\ b)" using DNI_def dni by simp + } thus ?thesis by (simp add: DM4_def) +qed +text\\noindent{From this follows that DM3 (resp. DM4) is entailed by CoP2 (resp. CoP1).}\ +lemma CoP2_DM3: "CoP2 \ \ DM3 \" by (simp add: CoP2_def2 CoPw_DNE_DM3) +lemma CoP1_DM4: "CoP1 \ \ DM4 \" by (simp add: CoP1_def2 CoPw_DNI_DM4) +text\\noindent{Explore some non-entailment relations:}\ +lemma "CoPw \ \ DM3 \ \ DM4 \ \ nNor \ \ nDNor \ \ DNI \" nitpick oops +lemma "CoPw \ \ DM3 \ \ DM4 \ \ nNor \ \ nDNor \ \ DNE \" nitpick oops +lemma "CoPw \ \ DM3 \ \ DM4 \ \ DNI \ \ DNE \ \ ECQm \" nitpick oops +lemma "CoPw \ \ DM3 \ \ DM4 \ \ DNI \ \ DNE \ \ TNDm \" nitpick oops + + +subsubsection \Contextual (strong) contraposition rule\ + +text\\noindent{XCoP: contextual contraposition (global/rule variant).}\ +abbreviation pXCoP ("XCoP\<^sup>_\<^sup>_ _") where "XCoP\<^sup>a\<^sup>b \ \ \c. c \<^bold>\ a \<^bold>\ b \ c \<^bold>\ (\ b) \<^bold>\ (\ a)" +definition "XCoP \ \ \a b. XCoP\<^sup>a\<^sup>b \" +declare XCoP_def[Defs] + +text\\noindent{XCoP can alternatively be defined as ECQw plus TNDw.}\ +lemma XCoP_def2: "XCoP \ = (ECQw \ \ TNDw \)" proof - + have LtoR1: "XCoP \ \ ECQw \" unfolding XCoP_def ECQw_def conn by auto + have LtoR2: "XCoP \ \ TNDw \" unfolding XCoP_def TNDw_def conn by (smt atom_def atomic2 conn) + have RtoL: "ECQw \ \ TNDw \ \ XCoP \" using XCoP_def ECQw_def TNDw_def unfolding conn by metis + from LtoR1 LtoR2 RtoL show ?thesis by blast +qed +text\\noindent{Explore some (non)entailment relations:}\ +lemma "XCoP \ \ ECQ \" nitpick oops +lemma "XCoP \ \ TND \" nitpick oops +lemma XCoP_CoPw: "XCoP \ \ CoPw \" unfolding Defs conn by metis +lemma "XCoP \ \ CoP1 \" nitpick oops +lemma "XCoP \ \ CoP2 \" nitpick oops +lemma "XCoP \ \ CoP3 \" nitpick oops +lemma "CoP1 \ \ CoP2 \ \ XCoP \" nitpick oops +lemma "XCoP \ \ nNor \" nitpick oops +lemma "XCoP \ \ nDNor \" nitpick oops +lemma "XCoP \ \ rDNI \" nitpick oops +lemma "XCoP \ \ rDNE \" nitpick oops +lemma XCoP_DM3: "XCoP \ \ DM3 \" unfolding DM3_def XCoP_def conn using ECQw_def TNDw_def atom_def atomic2 conn by smt +lemma XCoP_DM4: "XCoP \ \ DM4 \" unfolding DM4_def XCoP_def conn using ECQw_def TNDw_def atom_def atomic2 conn by smt + + +subsubsection \Local contraposition axioms\ +text\\noindent{Observe that the definitions below take implication as an additional parameter: @{text "\"}.}\ + +text\\noindent{lCoP: contraposition (local/axiom variants).}\ +abbreviation plCoPw ("lCoPw\<^sup>_\<^sup>_ _ _") where "lCoPw\<^sup>a\<^sup>b \ \ \ (\ a b::\) \<^bold>\ (\ (\ b) (\ a))" +abbreviation plCoP1 ("lCoP1\<^sup>_\<^sup>_ _ _") where "lCoP1\<^sup>a\<^sup>b \ \ \ (\ a (\ b::\)) \<^bold>\ (\ b (\ a))" +abbreviation plCoP2 ("lCoP2\<^sup>_\<^sup>_ _ _") where "lCoP2\<^sup>a\<^sup>b \ \ \ (\ (\ a) b::\) \<^bold>\ (\ (\ b) a)" +abbreviation plCoP3 ("lCoP3\<^sup>_\<^sup>_ _ _") where "lCoP3\<^sup>a\<^sup>b \ \ \ (\ (\ a) (\ b::\)) \<^bold>\ (\ b a)" +definition "lCoPw \ \ \ \a b. lCoPw\<^sup>a\<^sup>b \ \" +definition "lCoP1 \ \ \ \a b. lCoP1\<^sup>a\<^sup>b \ \" +definition "lCoP1' \ \ \ \a b. (\ a (\ b)) \<^bold>\ (\ b (\ a))" +definition "lCoP2 \ \ \ \a b. lCoP2\<^sup>a\<^sup>b \ \" +definition "lCoP2' \ \ \ \a b. (\ (\ a) b) \<^bold>\ (\ (\ b) a)" +definition "lCoP3 \ \ \ \a b. lCoP3\<^sup>a\<^sup>b \ \" +declare lCoPw_def[Defs] lCoP1_def[Defs] lCoP1'_def[Defs] + lCoP2_def[Defs] lCoP2'_def[Defs] lCoP3_def[Defs] + +lemma lCoP1_defs_rel: "lCoP1 \ \ = lCoP1' \ \" by (metis (full_types) lCoP1'_def lCoP1_def) +lemma lCoP2_defs_rel: "lCoP2 \ \ = lCoP2' \ \" by (metis (full_types) lCoP2'_def lCoP2_def) + +text\\noindent{All local contraposition variants are in general independent from each other. However if we take +classical implication we can verify some relationships.}\ + +lemma lCoP1_def2: "lCoP1(\<^bold>\) \ = (lCoPw(\<^bold>\) \ \ DNI \)" unfolding Defs conn by smt +lemma lCoP2_def2: "lCoP2(\<^bold>\) \ = (lCoPw(\<^bold>\) \ \ DNE \)" unfolding Defs conn by smt + +lemma "lCoP1(\<^bold>\) \ \ lCoPw(\<^bold>\) \" unfolding Defs conn by metis +lemma "lCoPw(\<^bold>\) \ \ lCoP1(\<^bold>\) \" nitpick oops +lemma "lCoP2(\<^bold>\) \ \ lCoPw(\<^bold>\) \" unfolding Defs conn by metis +lemma "lCoPw(\<^bold>\) \ \ lCoP2(\<^bold>\) \" nitpick oops +lemma "lCoP3(\<^bold>\) \ \ lCoPw(\<^bold>\) \" unfolding Defs conn by blast +lemma "lCoPw(\<^bold>\) \ \ lCoP3(\<^bold>\) \" nitpick oops +lemma lCoP123: "lCoP1(\<^bold>\) \ \ lCoP2(\<^bold>\) \ \ lCoP3(\<^bold>\) \" unfolding Defs conn by metis + +text\\noindent{Local variants imply global ones as expected.}\ +lemma "lCoPw(\<^bold>\) \ \ CoPw \" unfolding Defs conn by metis +lemma "lCoP1(\<^bold>\) \ \ CoP1 \" unfolding Defs conn by metis +lemma "lCoP2(\<^bold>\) \ \ CoP2 \" unfolding Defs conn by metis +lemma "lCoP3(\<^bold>\) \ \ CoP3 \" unfolding Defs conn by metis + +text\\noindent{Explore some (non)entailment relations.}\ +lemma lCoPw_XCoP: "lCoPw(\<^bold>\) \ = XCoP \" unfolding Defs conn by (smt XCoP_def XCoP_def2 TNDw_def conn) +lemma lCoP1_TND: "lCoP1(\<^bold>\) \ \ TND \" by (smt XCoP_CoPw XCoP_def2 CoP1_Nor CoP1_def2 nNor_def TND_def TNDw_def lCoP1_def2 lCoPw_XCoP conn) +lemma "TND \ \ lCoP1(\<^bold>\) \" nitpick oops +lemma lCoP2_ECQ: "lCoP2(\<^bold>\) \ \ ECQ \" by (smt XCoP_CoPw XCoP_def2 CoP2_DNor CoP2_def2 nDNor_def ECQ_def ECQw_def lCoP2_def2 lCoPw_XCoP conn) +lemma "ECQ \ \ lCoP2(\<^bold>\) \" nitpick oops + + +subsubsection \Local modus tollens axioms\ + +text\\noindent{lMT: Modus tollens (local/axiom variants).}\ +abbreviation plMT0 ("lMT0\<^sup>_\<^sup>_ _ _") where "lMT0\<^sup>a\<^sup>b \ \ \ (\ a b::\) \<^bold>\ (\ b) \<^bold>\ (\ a)" +abbreviation plMT1 ("lMT1\<^sup>_\<^sup>_ _ _") where "lMT1\<^sup>a\<^sup>b \ \ \ (\ a (\ b::\)) \<^bold>\ b \<^bold>\ (\ a)" +abbreviation plMT2 ("lMT2\<^sup>_\<^sup>_ _ _") where "lMT2\<^sup>a\<^sup>b \ \ \ (\ (\ a) b::\) \<^bold>\ (\ b) \<^bold>\ a" +abbreviation plMT3 ("lMT3\<^sup>_\<^sup>_ _ _") where "lMT3\<^sup>a\<^sup>b \ \ \ (\ (\ a) (\ b::\)) \<^bold>\ b \<^bold>\ a" +definition "lMT0 \ \ \ \a b. lMT0\<^sup>a\<^sup>b \ \" +definition "lMT1 \ \ \ \a b. lMT1\<^sup>a\<^sup>b \ \" +definition "lMT2 \ \ \ \a b. lMT2\<^sup>a\<^sup>b \ \" +definition "lMT3 \ \ \ \a b. lMT3\<^sup>a\<^sup>b \ \" +declare lMT0_def[Defs] lMT1_def[Defs] lMT2_def[Defs] lMT3_def[Defs] + +text\\noindent{All local MT variants are in general independent from each other and also from local CoP instances. +However if we take classical implication we can verify that local MT and CoP are indeed equivalent.}\ +lemma "lMT0(\<^bold>\) \ = lCoPw(\<^bold>\) \" unfolding Defs conn by metis +lemma "lMT1(\<^bold>\) \ = lCoP1(\<^bold>\) \" unfolding Defs conn by metis +lemma "lMT2(\<^bold>\) \ = lCoP2(\<^bold>\) \" unfolding Defs conn by metis +lemma "lMT3(\<^bold>\) \ = lCoP3(\<^bold>\) \" unfolding Defs conn by metis + + +subsubsection \Disjunctive syllogism\ + +text\\noindent{DS: disjunctive syllogism.}\ +abbreviation pDS1 ("DS1\<^sup>_\<^sup>_ _ _") where "DS1\<^sup>a\<^sup>b \ \ \ (a \<^bold>\ b::\) \<^bold>\ (\ (\ a) b)" +abbreviation pDS2 ("DS2\<^sup>_\<^sup>_ _ _") where "DS2\<^sup>a\<^sup>b \ \ \ (\ (\ a) b::\) \<^bold>\ (a \<^bold>\ b)" +abbreviation pDS3 ("DS3\<^sup>_\<^sup>_ _ _") where "DS3\<^sup>a\<^sup>b \ \ \ ((\ a) \<^bold>\ b::\) \<^bold>\ (\ a b)" +abbreviation pDS4 ("DS4\<^sup>_\<^sup>_ _ _") where "DS4\<^sup>a\<^sup>b \ \ \ (\ a b::\) \<^bold>\ ((\ a) \<^bold>\ b)" +definition "DS1 \ \ \ \a b. DS1\<^sup>a\<^sup>b \ \" +definition "DS2 \ \ \ \a b. DS2\<^sup>a\<^sup>b \ \" +definition "DS3 \ \ \ \a b. DS3\<^sup>a\<^sup>b \ \" +definition "DS4 \ \ \ \a b. DS4\<^sup>a\<^sup>b \ \" +declare DS1_def[Defs] DS2_def[Defs] DS3_def[Defs] DS4_def[Defs] + +text\\noindent{All DS variants are in general independent from each other. However if we take classical implication +we can verify that the pairs DS1-DS3 and DS2-DS4 are indeed equivalent. }\ +lemma "DS1(\<^bold>\) \ = DS3(\<^bold>\) \" unfolding Defs by (metis impl_def join_def) +lemma "DS2(\<^bold>\) \ = DS4(\<^bold>\) \" unfolding Defs by (metis impl_def join_def) + +text\\noindent{Explore some (non)entailment relations.}\ +lemma DS1_nDNor: "DS1(\<^bold>\) \ \ nDNor \" unfolding Defs by (metis bottom_def impl_def join_def top_def) +lemma DS2_nNor: "DS2(\<^bold>\) \ \ nNor \" unfolding Defs by (metis bottom_def impl_def join_def top_def) +lemma lCoP2_DS1: "lCoP2(\<^bold>\) \ \ DS1(\<^bold>\) \" unfolding Defs conn by metis +lemma lCoP1_DS2: "lCoP1(\<^bold>\) \ \ DS2(\<^bold>\) \" unfolding Defs by (metis (no_types, lifting) conn) +lemma "CoP2 \ \ DS1(\<^bold>\) \" nitpick oops +lemma "CoP1 \ \ DS2(\<^bold>\) \" nitpick oops + +end diff --git a/thys/Topological_Semantics/sse_operation_negative_quantification.thy b/thys/Topological_Semantics/sse_operation_negative_quantification.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/sse_operation_negative_quantification.thy @@ -0,0 +1,114 @@ +theory sse_operation_negative_quantification + imports sse_operation_negative sse_boolean_algebra_quantification +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +subsection \Definitions and interrelations (infinitary case)\ + +text\\noindent{We define and interrelate infinitary variants for some previously introduced ('negative') conditions +on operations. We show how they relate to quantifiers as previously defined.}\ + +text\\noindent{iDM: infinitary De Morgan laws.}\ +abbreviation riDM1 ("iDM1\<^sup>_ _") where "iDM1\<^sup>S \ \ \(\<^bold>\S) \<^bold>\ \<^bold>\Ra[\|S]" +abbreviation riDM2 ("iDM2\<^sup>_ _") where "iDM2\<^sup>S \ \ \<^bold>\Ra[\|S] \<^bold>\ \(\<^bold>\S)" +abbreviation riDM3 ("iDM3\<^sup>_ _") where "iDM3\<^sup>S \ \ \(\<^bold>\S) \<^bold>\ \<^bold>\Ra[\|S]" +abbreviation riDM4 ("iDM4\<^sup>_ _") where "iDM4\<^sup>S \ \ \<^bold>\Ra[\|S] \<^bold>\ \(\<^bold>\S)" +definition "iDM1 \ \ \S. iDM1\<^sup>S \" +definition "iDM2 \ \ \S. iDM2\<^sup>S \" +definition "iDM3 \ \ \S. iDM3\<^sup>S \" +definition "iDM4 \ \ \S. iDM4\<^sup>S \" +declare iDM1_def[Defs] iDM2_def[Defs] iDM3_def[Defs] iDM4_def[Defs] + +lemma CoPw_iDM1: "CoPw \ \ iDM1 \" unfolding Defs by (smt Ra_restr_all sup_char) +lemma CoPw_iDM2: "CoPw \ \ iDM2 \" unfolding Defs by (smt Ra_restr_ex inf_char) +lemma CoP2_iDM3: "CoP2 \ \ iDM3 \" by (smt CoP2_def Ra_restr_ex iDM3_def inf_char) +lemma CoP1_iDM4: "CoP1 \ \ iDM4 \" by (smt CoP1_def Ra_restr_all iDM4_def sup_char) +lemma "XCoP \ \ iDM3 \" nitpick oops +lemma "XCoP \ \ iDM4 \" nitpick oops + +text\\noindent{DM1, DM2, iDM1, iDM2 and CoPw are equivalent.}\ +lemma iDM1_rel: "iDM1 \ \ DM1 \" proof - + assume idm1: "iDM1 \" + { fix a::"\" and b::"\" + let ?S="\Z. Z=a \ Z=b" + have "\<^bold>\Ra[\|?S] = \<^bold>\\<^sup>R\?S\ \" using Ra_restr_all by blast + moreover have "\<^bold>\\<^sup>R\?S\ \ = (\ a) \<^bold>\ (\ b)" using meet_def by auto + ultimately have "\<^bold>\Ra[\|?S] = (\ a) \<^bold>\ (\ b)" by simp + moreover have "\<^bold>\?S = a \<^bold>\ b" using supremum_def join_def by auto + moreover from idm1 have "\(\<^bold>\?S) \<^bold>\ \<^bold>\Ra[\|?S]" by (simp add: iDM1_def) + ultimately have "\(a \<^bold>\ b) \<^bold>\ (\ a) \<^bold>\ (\ b)" by simp + } thus ?thesis by (simp add: DM1_def) + qed +lemma iDM2_rel: "iDM2 \ \ DM2 \" proof - + assume idm2: "iDM2 \" + { fix a::"\" and b::"\" + let ?S="\Z. Z=a \ Z=b" + have "\<^bold>\Ra[\|?S] = \<^bold>\\<^sup>R\?S\ \" using Ra_restr_ex by blast + moreover have "\<^bold>\\<^sup>R\?S\ \ = (\ a) \<^bold>\ (\ b)" using join_def by auto + ultimately have "\<^bold>\Ra[\|?S] = (\ a) \<^bold>\ (\ b)" by simp + moreover have "\<^bold>\?S = a \<^bold>\ b" using infimum_def meet_def by auto + moreover from idm2 have "\<^bold>\Ra[\|?S] \<^bold>\ \(\<^bold>\?S)" by (simp add: iDM2_def) + ultimately have "(\ a) \<^bold>\ (\ b) \<^bold>\ \(a \<^bold>\ b)" by auto + } thus ?thesis by (simp add: DM2_def) +qed +lemma "DM1 \ = iDM1 \" using CoPw_iDM1 DM1_CoPw iDM1_rel by blast +lemma "DM2 \ = iDM2 \" using CoPw_iDM2 DM2_CoPw iDM2_rel by blast +lemma "iDM1 \ = iDM2 \" using CoPw_iDM1 CoPw_iDM2 DM1_CoPw DM2_CoPw iDM1_rel iDM2_rel by blast + +text\\noindent{iDM3/4 entail their finitary variants but not the other way round.}\ +lemma iDM3_rel: "iDM3 \ \ DM3 \" proof - + assume idm3: "iDM3 \" + { fix a::"\" and b::"\" + let ?S="\Z. Z=a \ Z=b" + have "\<^bold>\Ra[\|?S] = \<^bold>\\<^sup>R\?S\ \" using Ra_restr_ex by blast + moreover have "\<^bold>\\<^sup>R\?S\ \ = (\ a) \<^bold>\ (\ b)" using join_def by auto + ultimately have "\<^bold>\Ra[\|?S] = (\ a) \<^bold>\ (\ b)" by simp + moreover have "\<^bold>\?S = a \<^bold>\ b" using infimum_def meet_def by auto + moreover from idm3 have "\(\<^bold>\?S) \<^bold>\ \<^bold>\Ra[\|?S]" by (simp add: iDM3_def) + ultimately have "\(a \<^bold>\ b) \<^bold>\ (\ a) \<^bold>\ (\ b)" by auto + } thus ?thesis by (simp add: DM3_def) +qed +lemma iDM4_rel: "iDM4 \ \ DM4 \" proof - + assume idm4: "iDM4 \" + { fix a::"\" and b::"\" + let ?S="\Z. Z=a \ Z=b" + have "\<^bold>\Ra[\|?S] = \<^bold>\\<^sup>R\?S\ \" using Ra_restr_all by blast + moreover have "\<^bold>\\<^sup>R\?S\ \ = (\ a) \<^bold>\ (\ b)" using meet_def by auto + ultimately have "\<^bold>\Ra[\|?S] = (\ a) \<^bold>\ (\ b)" by simp + moreover have "\<^bold>\?S = a \<^bold>\ b" using supremum_def join_def by auto + moreover from idm4 have "\<^bold>\Ra[\|?S] \<^bold>\ \(\<^bold>\?S)" by (simp add: iDM4_def) + ultimately have "(\ a) \<^bold>\ (\ b) \<^bold>\ \(a \<^bold>\ b)" by simp + } thus ?thesis by (simp add: DM4_def) + qed +lemma "DM3 \ \ iDM3 \" nitpick oops +lemma "DM4 \ \ iDM4 \" nitpick oops + +text\\noindent{Indeed the previous characterization of the infinitary De Morgan laws is fairly general and entails +the traditional version employing quantifiers (though not the other way round).}\ +text\\noindent{The first two variants DM1/2 follow easily from DM1/2, iDM1/2 or CoPw (all of them equivalent).}\ +lemma iDM1_trad: "iDM1 \ \ \\. \(\<^bold>\x. \ x) \<^bold>\ (\<^bold>\x. \(\ x))" by (metis (mono_tags, lifting) CoPw_def DM1_CoPw iDM1_rel) +lemma iDM2_trad: "iDM2 \ \ \\. (\<^bold>\x. \(\ x)) \<^bold>\ \(\<^bold>\x. \ x)" by (metis (mono_tags, lifting) CoPw_def DM2_CoPw iDM2_rel) + +text\\noindent{An analogous relationship holds for variants DM3/4, though the proof is less trivial. +To see how let us first consider an intermediate version of the De Morgan laws, obtained as a +particular case of the general variant above, with S as the range of a propositional function.}\ +abbreviation "piDM1 \ \ \ \(\<^bold>\Ra(\)) \<^bold>\ \<^bold>\Ra[\|Ra(\)]" +abbreviation "piDM2 \ \ \ \<^bold>\Ra[\|Ra(\)] \<^bold>\ \(\<^bold>\Ra(\))" +abbreviation "piDM3 \ \ \ \(\<^bold>\Ra(\)) \<^bold>\ \<^bold>\Ra[\|Ra(\)]" +abbreviation "piDM4 \ \ \ \<^bold>\Ra[\|Ra(\)] \<^bold>\ \(\<^bold>\Ra(\))" + +text\\noindent{They are entailed (unidirectionally) by the general De Morgan laws.}\ +lemma "iDM1 \ \ \\. piDM1 \ \" by (simp add: iDM1_def) +lemma "iDM2 \ \ \\. piDM2 \ \" by (simp add: iDM2_def) +lemma "iDM3 \ \ \\. piDM3 \ \" by (simp add: iDM3_def) +lemma "iDM4 \ \ \\. piDM4 \ \" by (simp add: iDM4_def) + +text\\noindent{Drawing upon the relationships shown previously we can rewrite the latter two as:}\ +lemma iDM3_aux: "piDM3 \ \ \ \(\<^bold>\\) \<^bold>\ \<^bold>\[\|\Ra \\]\<^sup>N" unfolding Ra_all Ra_ex_restr by simp +lemma iDM4_aux: "piDM4 \ \ \ \<^bold>\[\|\Ra \\]\<^sup>P \<^bold>\ \(\<^bold>\\)" unfolding Ra_ex Ra_all_restr by simp + +text\\noindent{and thus finally obtain the desired formulas.}\ +lemma iDM3_trad: "iDM3 \ \ \\. \(\<^bold>\x. \ x) \<^bold>\ (\<^bold>\x. \(\ x))" by (metis Ra_ex_comp2 iDM3_def iDM3_aux comp_apply) +lemma iDM4_trad: "iDM4 \ \ \\. (\<^bold>\x. \(\ x)) \<^bold>\ \(\<^bold>\x. \ x)" by (metis Ra_all_comp1 iDM4_def iDM4_aux comp_apply) + +end diff --git a/thys/Topological_Semantics/sse_operation_positive.thy b/thys/Topological_Semantics/sse_operation_positive.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/sse_operation_positive.thy @@ -0,0 +1,96 @@ +theory sse_operation_positive + imports sse_boolean_algebra +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +section \Positive semantic conditions for operations\ + +text\\noindent{We define and interrelate some useful conditions on propositional functions which do not involve +negative-like properties (hence 'positive'). We focus on propositional functions which correspond to unary +connectives of the algebra (with type @{text "\\\"}). We call such propositional functions 'operations'.}\ + +subsection \Definitions (finitary case)\ + +text\\noindent{Monotonicity (MONO).}\ +definition "MONO \ \ \A B. A \<^bold>\ B \ \ A \<^bold>\ \ B" +lemma MONO_ant: "MONO \ \ \A B C. A \<^bold>\ B \ \(B \<^bold>\ C) \<^bold>\ \(A \<^bold>\ C)" by (smt MONO_def conn) +lemma MONO_cons: "MONO \ \ \A B C. A \<^bold>\ B \ \(C \<^bold>\ A) \<^bold>\ \(C \<^bold>\ B)" by (smt MONO_def conn) +lemma MONO_dual: "MONO \ \ MONO \\<^sup>d" by (smt MONO_def dual_def compl_def) + +text\\noindent{Extensive/expansive (EXP) and its dual (dEXP), aka. 'contractive'.}\ +definition "EXP \ \ \A. A \<^bold>\ \ A" +definition "dEXP \ \ \A. \ A \<^bold>\ A" +lemma EXP_dual1: "EXP \ \ dEXP \\<^sup>d" by (metis EXP_def dEXP_def dual_def compl_def) +lemma EXP_dual2: "dEXP \ \ EXP \\<^sup>d" by (metis EXP_def dEXP_def dual_def compl_def) + +text\\noindent{Idempotence (IDEM).}\ +definition "IDEM \ \ \A. (\ A) \<^bold>\ \(\ A)" +definition "IDEMa \ \ \A. (\ A) \<^bold>\ \(\ A)" +definition "IDEMb \ \ \A. (\ A) \<^bold>\ \(\ A)" +lemma IDEM_dual1: "IDEMa \ \ IDEMb \\<^sup>d" unfolding dual_def IDEMa_def IDEMb_def compl_def by auto +lemma IDEM_dual2: "IDEMb \ \ IDEMa \\<^sup>d" unfolding dual_def IDEMa_def IDEMb_def compl_def by auto +lemma IDEM_dual: "IDEM \ = IDEM \\<^sup>d" by (metis IDEM_def IDEM_dual1 IDEM_dual2 IDEMa_def IDEMb_def dual_symm) + +text\\noindent{Normality (NOR) and its dual (dNOR).}\ +definition "NOR \ \ (\ \<^bold>\) \<^bold>\ \<^bold>\" +definition "dNOR \ \ (\ \<^bold>\) \<^bold>\ \<^bold>\" +lemma NOR_dual1: "NOR \ = dNOR \\<^sup>d" unfolding dual_def NOR_def dNOR_def top_def bottom_def compl_def by simp +lemma NOR_dual2: "dNOR \ = NOR \\<^sup>d" unfolding dual_def NOR_def dNOR_def top_def bottom_def compl_def by simp + +text\\noindent{Distribution over meets or multiplicativity (MULT).}\ +definition "MULT \ \ \A B. \(A \<^bold>\ B) \<^bold>\ (\ A) \<^bold>\ (\ B)" +definition "MULT_a \ \ \A B. \(A \<^bold>\ B) \<^bold>\ (\ A) \<^bold>\ (\ B)" +definition "MULT_b \ \ \A B. \(A \<^bold>\ B) \<^bold>\ (\ A) \<^bold>\ (\ B)" + +text\\noindent{Distribution over joins or additivity (ADDI).}\ +definition "ADDI \ \ \A B. \(A \<^bold>\ B) \<^bold>\ (\ A) \<^bold>\ (\ B)" +definition "ADDI_a \ \ \A B. \(A \<^bold>\ B) \<^bold>\ (\ A) \<^bold>\ (\ B)" +definition "ADDI_b \ \ \A B. \(A \<^bold>\ B) \<^bold>\ (\ A) \<^bold>\ (\ B)" + + +subsection \Relations among conditions (finitary case)\ + +text\\noindent{dEXP and dNOR entail NOR.}\ +lemma "dEXP \ \ dNOR \ \ NOR \" by (meson bottom_def dEXP_def NOR_def) + +text\\noindent{EXP and NOR entail dNOR.}\ +lemma "EXP \ \ NOR \ \ dNOR \" by (simp add: EXP_def dNOR_def top_def) + +text\\noindent{Interestingly, EXP and its dual allow for an alternative characterization of fixed-point operators.}\ +lemma EXP_fp: "EXP \ \ \\<^sup>f\<^sup>p \<^bold>\ (\\<^sup>c \<^bold>\ id)" by (smt id_def EXP_def dual_def dual_symm equal_op_def conn) +lemma dEXP_fp: "dEXP \ \ \\<^sup>f\<^sup>p \<^bold>\ (\ \<^bold>\ compl)" by (smt dEXP_def equal_op_def conn) + +text\\noindent{MONO, MULT-a and ADDI-b are equivalent.}\ +lemma MONO_MULTa: "MONO \ = MULT_a \" proof - + have lr: "MONO \ \ MULT_a \" by (smt MONO_def MULT_a_def meet_def) + have rl: "MULT_a \ \ MONO \" proof- + assume multa: "MULT_a \" + { fix A B + { assume "A \<^bold>\ B" + hence "A \<^bold>\ A \<^bold>\ B" unfolding conn by blast + hence "\ A \<^bold>\ \(A \<^bold>\ B)" unfolding conn by simp + moreover from multa have "\(A \<^bold>\ B) \<^bold>\ (\ A) \<^bold>\ (\ B)" using MULT_a_def by metis + ultimately have "\ A \<^bold>\ (\ A) \<^bold>\ (\ B)" by blast + hence "\ A \<^bold>\ (\ B)" unfolding conn by blast + } hence "A \<^bold>\ B \ \ A \<^bold>\ \ B" by (rule impI) + } thus ?thesis by (simp add: MONO_def) qed + from lr rl show ?thesis by auto +qed +lemma MONO_ADDIb: "MONO \ = ADDI_b \" proof - + have lr: "MONO \ \ ADDI_b \" by (smt ADDI_b_def MONO_def join_def) + have rl: "ADDI_b \ \ MONO \" proof - + assume addib: "ADDI_b \" + { fix A B + { assume "A \<^bold>\ B" + hence "B \<^bold>\ A \<^bold>\ B" unfolding conn by blast + hence "\ B \<^bold>\ \(A \<^bold>\ B)" unfolding conn by simp + moreover from addib have "(\ A) \<^bold>\ (\ B) \<^bold>\ \(A \<^bold>\ B)" using ADDI_b_def by metis + ultimately have "(\ A) \<^bold>\ (\ B) \<^bold>\ \ B" by blast + hence "\ A \<^bold>\ (\ B)" unfolding conn by blast + } hence "A \<^bold>\ B \ \ A \<^bold>\ \ B" by (rule impI) + } thus ?thesis by (simp add: MONO_def) qed + from lr rl show ?thesis by auto +qed +lemma ADDIb_MULTa: "ADDI_b \ = MULT_a \" using MONO_ADDIb MONO_MULTa by auto + +end diff --git a/thys/Topological_Semantics/sse_operation_positive_quantification.thy b/thys/Topological_Semantics/sse_operation_positive_quantification.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/sse_operation_positive_quantification.thy @@ -0,0 +1,98 @@ +theory sse_operation_positive_quantification + imports sse_operation_positive sse_boolean_algebra_quantification +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + + +subsection \Definitions (infinitary case)\ + +text\\noindent{We define and interrelate infinitary variants for some previously introduced ('positive') conditions +on operations and show how they relate to quantifiers as previously defined.}\ + +text\\noindent{Distribution over infinite meets (infima) or infinite multiplicativity (iMULT).}\ +definition "iMULT \ \ \S. \(\<^bold>\S) \<^bold>\ \<^bold>\Ra[\|S]" +definition "iMULT_a \ \ \S. \(\<^bold>\S) \<^bold>\ \<^bold>\Ra[\|S]" +definition "iMULT_b \ \ \S. \(\<^bold>\S) \<^bold>\ \<^bold>\Ra[\|S]" + +text\\noindent{Distribution over infinite joins (suprema) or infinite additivity (iADDI).}\ +definition "iADDI \ \ \S. \(\<^bold>\S) \<^bold>\ \<^bold>\Ra[\|S]" +definition "iADDI_a \ \ \S. \(\<^bold>\S) \<^bold>\ \<^bold>\Ra[\|S]" +definition "iADDI_b \ \ \S. \(\<^bold>\S) \<^bold>\ \<^bold>\Ra[\|S]" + + +subsection \Relations among conditions (infinitary case)\ + +text\\noindent{We start by noting that there is a duality between iADDI-a and iMULT-b.}\ +lemma iADDI_MULT_dual1: "iADDI_a \ \ iMULT_b \\<^sup>d" unfolding iADDI_a_def iMULT_b_def by (metis compl_def dual_def iDM_a iDM_b Ra_dual1) +lemma iADDI_MULT_dual2: "iMULT_b \ \ iADDI_a \\<^sup>d" unfolding iADDI_a_def iMULT_b_def by (metis compl_def dual_def iDM_b Ra_dual3) + +text\\noindent{MULT-a and iMULT-a are equivalent.}\ +lemma iMULTa_rel: "iMULT_a \ = MULT_a \" proof - + have lr: "iMULT_a \ \ MULT_a \" proof - + assume imulta: "iMULT_a \" + { fix A::"\" and B::"\" + let ?S="\Z. Z=A \ Z=B" + from imulta have "\(\<^bold>\?S) \<^bold>\ \<^bold>\\<^sup>R\?S\ \" by (simp add: iMULT_a_def Ra_restr_all) + moreover have "\<^bold>\?S = A \<^bold>\ B" using infimum_def meet_def by auto + moreover have "\<^bold>\\<^sup>R\?S\ \ = (\ A) \<^bold>\ (\ B)" using meet_def by auto + ultimately have "\(A \<^bold>\ B) \<^bold>\ (\ A) \<^bold>\ (\ B)" by smt + } thus ?thesis by (simp add: MULT_a_def) qed + have rl: "MULT_a \ \ iMULT_a \" by (smt MONO_def MONO_MULTa Ra_restr_all iMULT_a_def inf_char) + from lr rl show ?thesis by auto +qed +text\\noindent{ADDI-b and iADDI-b are equivalent.}\ +lemma iADDIb_rel: "iADDI_b \ = ADDI_b \" proof - + have lr: "iADDI_b \ \ ADDI_b \" proof - + assume iaddib: "iADDI_b \" + { fix A::"\" and B::"\" + let ?S="\Z. Z=A \ Z=B" + from iaddib have "\(\<^bold>\?S) \<^bold>\ \<^bold>\\<^sup>R\?S\(\)" by (simp add: iADDI_b_def Ra_restr_ex) + moreover have "\<^bold>\?S = A \<^bold>\ B" using supremum_def join_def by auto + moreover have "\<^bold>\\<^sup>R\?S\(\) = (\ A) \<^bold>\ (\ B)" using join_def by auto + ultimately have "\(A \<^bold>\ B) \<^bold>\ (\ A) \<^bold>\ (\ B)" by smt + } thus ?thesis by (simp add: ADDI_b_def) qed + have rl: "ADDI_b \ \ iADDI_b \" by (smt MONO_def MONO_ADDIb Ra_restr_ex iADDI_b_def sup_char) + from lr rl show ?thesis by auto +qed + +text\\noindent{Thus we have that MONO, MULT-a/iMULT-a and ADDI-b/iADDI-b are all equivalent.}\ +lemma MONO_iADDIb: "MONO \ = iADDI_b \" using MONO_ADDIb iADDIb_rel by simp +lemma MONO_iMULTa: "MONO \ = iMULT_a \" using MONO_MULTa iMULTa_rel by simp +lemma iADDI_b_iMULTa: "iADDI_b \ = iMULT_a \" using MONO_iADDIb MONO_iMULTa by auto + +lemma PI_imult: "MONO \ \ iMULT_b \ \ iMULT \" using MONO_MULTa iMULT_a_def iMULT_b_def iMULT_def iMULTa_rel by auto +lemma PC_iaddi: "MONO \ \ iADDI_a \ \ iADDI \" using MONO_ADDIb iADDI_a_def iADDI_b_def iADDI_def iADDIb_rel by auto + +text\\noindent{Interestingly, we can show that suitable (infinitary) conditions on an operation can make the set +of its fixed points closed under infinite meets/joins.}\ +lemma fp_inf_closed: "MONO \ \ iMULT_b \ \ infimum_closed (fp \)" by (metis (full_types) PI_imult Ra_restr_all iMULT_def infimum_def) +lemma fp_sup_closed: "MONO \ \ iADDI_a \ \ supremum_closed (fp \)" by (metis (full_types) PC_iaddi Ra_restr_ex iADDI_def supremum_def) + + +subsection \Exploring the Barcan formula and its converse\ + +text\\noindent{The converse Barcan formula follows readily from monotonicity.}\ +lemma CBarcan1: "MONO \ \ \\. \(\<^bold>\x. \ x) \<^bold>\ (\<^bold>\x. \(\ x))" by (metis (mono_tags, lifting) MONO_def) +lemma CBarcan2: "MONO \ \ \\. (\<^bold>\x. \(\ x)) \<^bold>\ \(\<^bold>\x. \ x)" by (metis (mono_tags, lifting) MONO_def) + +text\\noindent{However, the Barcan formula requires a stronger assumption (of an infinitary character).}\ +lemma Barcan1: "iMULT_b \ \ \\. (\<^bold>\x. \(\ x)) \<^bold>\ \(\<^bold>\x. \ x)" proof - + assume imultb: "iMULT_b \" + { fix \::"'a\\" + from imultb have "(\<^bold>\Ra(\\\)) \<^bold>\ \(\<^bold>\Ra(\))" unfolding iMULT_b_def by (smt comp_apply infimum_def pfunRange_def pfunRange_restr_def) + moreover have "\<^bold>\Ra(\) = (\<^bold>\x. \ x)" unfolding Ra_all by simp + moreover have "\<^bold>\Ra(\\\) = (\<^bold>\x. \(\ x))" unfolding Ra_all by simp + ultimately have "(\<^bold>\x. \(\ x)) \<^bold>\ \(\<^bold>\x. \ x)" by simp + } thus ?thesis by simp +qed +lemma Barcan2: "iADDI_a \ \ \\. \(\<^bold>\x. \ x) \<^bold>\ (\<^bold>\x. \(\ x))" proof - + assume iaddia: "iADDI_a \" + { fix \::"'a\\" + from iaddia have "\(\<^bold>\Ra(\)) \<^bold>\ (\<^bold>\Ra(\\\))" unfolding iADDI_a_def Ra_restr_ex by (smt fcomp_comp fcomp_def pfunRange_def sup_char) + moreover have "\<^bold>\Ra(\) = (\<^bold>\x. \ x)" unfolding Ra_ex by simp + moreover have "\<^bold>\Ra(\\\) = (\<^bold>\x. \(\ x))" unfolding Ra_ex by simp + ultimately have "\(\<^bold>\x. \ x) \<^bold>\ (\<^bold>\x. \(\ x))" by simp + } thus ?thesis by simp +qed + +end diff --git a/thys/Topological_Semantics/topo_alexandrov.thy b/thys/Topological_Semantics/topo_alexandrov.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/topo_alexandrov.thy @@ -0,0 +1,139 @@ +theory topo_alexandrov + imports sse_operation_positive_quantification +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + + +section \Generalized specialization orderings and Alexandrov topologies\ + +text\\noindent{A topology is called 'Alexandrov' (after the Russian mathematician Pavel Alexandrov) if the intersection +(resp. union) of any (finite or infinite) family of open (resp. closed) sets is open (resp. closed); +in algebraic terms, this means that the set of fixed points of the interior (closure) operation is closed +under infinite meets (joins). Another common algebraic formulation requires the closure (interior) operation +to satisfy the infinitary variants of additivity (multiplicativity), i.e. iADDI (iMULT) as introduced before. + +In the literature, the well-known Kuratowski conditions for the closure (resp. interior) operation are assumed, +namely: ADDI, EXP, NOR, IDEM (resp. MULT, dEXP, dNOR, IDEM). This makes both formulations equivalent. +However, this is not the case in general if those conditions become negotiable.}\ + +text\\noindent{Alexandrov topologies have interesting properties relating them to the semantics of modal logic. +Assuming Kuratowski conditions, Alexandrov topological operations defined on subsets of S are in one-to-one +correspondence with preorders on S; in topological terms, Alexandrov topologies are uniquely determined by +their specialization preorders. Since we do not presuppose any Kuratowski conditions to begin with, the +preorders in question are in general not even transitive. Here we just call them 'specialization relations'. +We will still call (generalized) closure/interior-like operations as such (for lack of a better name). +We explore minimal conditions under which some relevant results for the semantics of modal logic obtain.}\ + +subsection \Specialization relations\ + +text\\noindent{Specialization relations (among worlds/points) are particular cases of propositional functions with type @{text "w\\"}.}\ + +text\\noindent{Define some relevant properties of relations: }\ +abbreviation "serial R \ \x. \y. R x y" +abbreviation "reflexive R \ \x. R x x" +abbreviation "transitive R \ \x y z. R x y \ R y z \ R x z" +abbreviation "antisymmetric R \ \x y. R x y \ R y x \ x = y" +abbreviation "symmetric R \ \x y. R x y \ R y x" + +text\\noindent{Closure/interior operations can be derived from an arbitrary relation as operations returning down-/up-sets.}\ +definition Cl_rel::"(w\\)\(\\\)" ("\\<^sub>R") where "\\<^sub>R R \ \A. \w. \v. R w v \ A v" +definition Int_rel::"(w\\)\(\\\)" ("\\<^sub>R") where "\\<^sub>R R \ \A. \w. \v. R w v \ A v" + +text\\noindent{Duality between interior and closure follows directly:}\ +lemma dual_rel1: "\A. (\\<^sub>R R) A \<^bold>\ (\\<^sub>R R)\<^sup>d A" unfolding Cl_rel_def Int_rel_def dual_def conn by simp +lemma dual_rel2: "\A. (\\<^sub>R R) A \<^bold>\ (\\<^sub>R R)\<^sup>d A" unfolding Cl_rel_def Int_rel_def dual_def conn by simp + +text\\noindent{We explore minimal conditions of the specialization relation under which some operation's conditions obtain.}\ +lemma rC1: "ADDI (\\<^sub>R R)" unfolding Cl_rel_def ADDI_def conn by blast +lemma rC1i:"iADDI (\\<^sub>R R)" by (smt Cl_rel_def Ra_restr_ex iADDI_def supremum_def) +lemma rC2: "reflexive R \ EXP (\\<^sub>R R)" unfolding EXP_def Cl_rel_def by auto +lemma rC3: "NOR (\\<^sub>R R)" unfolding Cl_rel_def NOR_def conn by blast +lemma rC4: "reflexive R \ transitive R \ IDEM (\\<^sub>R R)" unfolding Cl_rel_def IDEM_def by smt +lemma rC_Barcan: "\\. (\\<^sub>R R)(\<^bold>\x. \ x) \<^bold>\ (\<^bold>\x. (\\<^sub>R R)(\ x))" unfolding Cl_rel_def by auto + +lemma rI1: "MULT (\\<^sub>R R)" unfolding Int_rel_def MULT_def conn by blast +lemma rI1i:"iMULT (\\<^sub>R R)" by (smt Int_rel_def Ra_restr_all iMULT_def infimum_def) +lemma rI2: "reflexive R \ dEXP (\\<^sub>R R)" unfolding Int_rel_def dEXP_def Int_rel_def by auto +lemma rI3: "dNOR (\\<^sub>R R)" unfolding Int_rel_def dNOR_def conn by simp +lemma rI4: "reflexive R \ transitive R \ IDEM (\\<^sub>R R)" unfolding IDEM_def Int_rel_def by smt +lemma rI_Barcan: "\\. (\<^bold>\x. (\\<^sub>R R)(\ x)) \<^bold>\ (\\<^sub>R R)(\<^bold>\x. \ x)" unfolding Int_rel_def by simp + +text\\noindent{A specialization relation can be derived from a given operation (intended as a closure-like operation).}\ +definition sp_rel::"(\\\)\(w\\)" ("\\<^sup>C") where "\\<^sup>C \ \ \w v. \ (\u. u=v) w" + +text\\noindent{Preorder properties of the specialization relation follow directly from the corresponding operation's conditions.}\ +lemma sp_rel_reflex: "EXP \ \ reflexive (\\<^sup>C \)" by (simp add: EXP_def sp_rel_def) +lemma sp_rel_trans: "MONO \ \ IDEM \ \ transitive (\\<^sup>C \)" by (smt IDEM_def MONO_def sp_rel_def) + +text\\noindent{However, we can obtain finite countermodels for antisymmetry and symmetry given all relevant conditions. +We will revisit this issue later and examine their relation with the topological separation axioms T0 and T1 resp.}\ +lemma "iADDI \ \ EXP \ \ NOR \ \ IDEM \ \ antisymmetric (\\<^sup>C \)" nitpick oops (*counterexample*) +lemma "iADDI \ \ EXP \ \ NOR \ \ IDEM \ \ symmetric (\\<^sup>C \)" nitpick oops (*counterexample*) + + +subsection \Alexandrov topology\ + +text\\noindent{As mentioned previously, Alexandrov closure (and by duality interior) operations correspond to specialization +relations. It is worth mentioning that in Alexandrov topologies every point has a minimal/smallest neighborhood, +namely the set of points related to it by the specialization (aka. accessibility) relation. Alexandrov spaces are +thus also called 'finitely generated'. We examine below minimal conditions under which these relations obtain.}\ + +lemma sp_rel_a: "MONO \ \ \A. (\\<^sub>R (\\<^sup>C \)) A \<^bold>\ \ A" by (smt Cl_rel_def MONO_def sp_rel_def) +lemma sp_rel_b: "iADDI_a \ \ \A. (\\<^sub>R (\\<^sup>C \)) A \<^bold>\ \ A" proof - + assume iaddia: "iADDI_a \" + { fix A + let ?S="\B::\. \w::w. A w \ B=(\u. u=w)" + have "A \<^bold>\ (\<^bold>\?S)" using supremum_def by auto + hence "\(A) \<^bold>\ \(\<^bold>\?S)" by (smt eq_ext) + moreover have "\<^bold>\Ra[\|?S] \<^bold>\ (\\<^sub>R (\\<^sup>C \)) A" by (smt Cl_rel_def Ra_restr_ex sp_rel_def) + moreover from iaddia have "\(\<^bold>\?S) \<^bold>\ \<^bold>\Ra[\|?S]" unfolding iADDI_a_def by simp + ultimately have "\ A \<^bold>\ (\\<^sub>R (\\<^sup>C \)) A" by simp + } thus ?thesis by simp +qed +lemma sp_rel: "iADDI \ \ \A. \ A \<^bold>\ (\\<^sub>R (\\<^sup>C \)) A" by (metis MONO_iADDIb iADDI_a_def iADDI_b_def iADDI_def sp_rel_a sp_rel_b) +text\\noindent{It is instructive to expand the definitions in the above lemma:}\ +lemma "iADDI \ \ \A. \w. (\ A) w \ (\v. A v \ (\ (\u. u=v)) w)" using Cl_rel_def sp_rel by fastforce + + +text\\noindent{We now turn to the more traditional characterization of Alexandrov topologies in terms of closure under +infinite joins/meets.}\ + +text\\noindent{Fixed points of operations satisfying ADDI (MULT) are not in general closed under infinite joins (meets). +For the given conditions countermodels are expected to be infinite. We (sanity) check that nitpick cannot find any.}\ +lemma "ADDI(\) \ supremum_closed (fp \)" (*nitpick*) oops (*cannot find finite countermodels*) +lemma "MULT(\) \ infimum_closed (fp \)" (*nitpick*) oops (*cannot find finite countermodels*) + +text\\noindent{By contrast, we can show that this obtains if assuming the corresponding infinitary variants (iADDI/iMULT).}\ +lemma "iADDI(\) \ supremum_closed (fp \)" by (metis (full_types) Ra_restr_ex iADDI_def supremum_def) +lemma "iMULT(\) \ infimum_closed (fp \)" by (metis (full_types) Ra_restr_all iMULT_def infimum_def) + +text\\noindent{As shown above, closure (interior) operations derived from relations readily satisfy iADDI (iMULT), +being thus closed under infinite joins (meets).}\ +lemma "supremum_closed (fp (\\<^sub>R R))" by (smt Cl_rel_def supremum_def) +lemma "infimum_closed (fp (\\<^sub>R R))" by (smt Int_rel_def infimum_def) + + +subsection \(Anti)symmetry and the separation axioms T0 and T1\ +text\\noindent{We can now revisit the relationship between (anti)symmetry and the separation axioms T1 and T0.}\ + +text\\noindent{T0: any two distinct points in the space can be separated by an open set (i.e. containing one point and not the other).}\ +abbreviation "T0_sep \ \ \w v. w \ v \ (\G. (fp \\<^sup>d)(G) \ (G w \ G v))" +text\\noindent{T1: any two distinct points can be separated by (two not necessarily disjoint) open sets, i.e. all singletons are closed.}\ +abbreviation "T1_sep \ \ \w. (fp \)(\u. u = w)" + +text\\noindent{We can (sanity) check that T1 entails T0 but not viceversa.}\ +lemma "T0_sep \ \ T1_sep \" nitpick oops (*counterexample*) +lemma "T1_sep \ \ T0_sep \" by (smt compl_def dual_def dual_symm) + +text\\noindent{Under appropriate conditions, T0-separation corresponds to antisymmetry of the specialization relation (here an ordering).}\ +lemma "T0_sep \ \ antisymmetric (\\<^sup>C \)" nitpick oops (*counterexample*) +lemma T0_antisymm_a: "MONO \ \ T0_sep \ \ antisymmetric (\\<^sup>C \)" by (smt Cl_rel_def compl_def dual_def sp_rel_a) +lemma T0_antisymm_b: "EXP \ \ IDEM \ \ antisymmetric (\\<^sup>C \) \ T0_sep \" by (metis (full_types) EXP_dual1 IDEM_def IDEM_dual2 IDEMa_def IDEMb_def compl_def dEXP_def dual_def dual_symm sp_rel_def) +lemma T0_antisymm: "MONO \ \ EXP \ \ IDEM \ \ T0_sep \ = antisymmetric (\\<^sup>C \)" by (metis T0_antisymm_a T0_antisymm_b) + +text\\noindent{Also, under the appropriate conditions, T1-separation corresponds to symmetry of the specialization relation.}\ +lemma T1_symm_a: "T1_sep \ \ symmetric (\\<^sup>C \)" using sp_rel_def by auto +lemma T1_symm_b: "MONO \ \ EXP \ \ T0_sep \ \ symmetric (\\<^sup>C \) \ T1_sep \" by (metis T0_antisymm_a sp_rel_def sp_rel_reflex) +lemma T1_symm: "MONO \ \ EXP \ \ T0_sep \ \ symmetric (\\<^sup>C \) = T1_sep \" by (metis T1_symm_a T1_symm_b) + +end diff --git a/thys/Topological_Semantics/topo_border_algebra.thy b/thys/Topological_Semantics/topo_border_algebra.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/topo_border_algebra.thy @@ -0,0 +1,54 @@ +theory topo_border_algebra + imports topo_operators_basic +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +section \Border algebra\ +text\\noindent{We define a border algebra in an analogous fashion to the well-known closure/interior algebras. +We also verify a few interesting properties.}\ + +text\\noindent{Declares a primitive (unconstrained) border operation and defines others from it.}\ +consts \::"\\\" +abbreviation "\ \ \\<^sub>B \" \\ interior \ +abbreviation "\ \ \\<^sub>B \" \\ closure \ +abbreviation "\ \ \\<^sub>B \" \\ frontier \ + + +subsection \Basic properties\ + +text\\noindent{Verifies minimal conditions under which operators resulting from conversion functions coincide.}\ +lemma ICdual: "\ \<^bold>\ \\<^sup>d" by (simp add: Cl_br_def Int_br_def dual_def equal_op_def conn) +lemma ICdual': "\ \<^bold>\ \\<^sup>d" by (simp add: Cl_br_def Int_br_def dual_def equal_op_def conn) +lemma FI_rel: "Br_1 \ \ \ \<^bold>\ \\<^sub>I \" using Fr_br_def Fr_int_def Int_br_def equal_op_def by (smt Br_5b_def PB5b dual_def conn) +lemma IF_rel: "Br_1 \ \ \ \<^bold>\ \\<^sub>F \" using Br_5b_def Fr_br_def Int_br_def Int_fr_def PB5b unfolding equal_op_def conn by fastforce +lemma FC_rel: "Br_1 \ \ \ \<^bold>\ \\<^sub>C \" using Br_5b_def Cl_br_def Fr_br_def Fr_cl_def PB5b unfolding equal_op_def conn by fastforce +lemma CF_rel: "Br_1 \ \ \ \<^bold>\ \\<^sub>F \" using Br_5b_def Cl_br_def Cl_fr_def Fr_br_def PB5b unfolding equal_op_def conn by fastforce +lemma BI_rel: "Br_1 \ \ \ \<^bold>\ \\<^sub>I \" using Br_5b_def Br_int_def Int_br_def PB5b diff_def equal_op_def by fastforce +lemma BC_rel: "Br_1 \ \ \ \<^bold>\ \\<^sub>C \" using BI_BC_rel BI_rel ICdual' eq_ext' by fastforce +lemma BF_rel: "Br_1 \ \ \ \<^bold>\ \\<^sub>F \" by (smt BI_rel Br_fr_def Br_int_def IF_rel Int_fr_def diff_def equal_op_def meet_def) + +text\\noindent{Fixed-point and other operators are interestingly related.}\ +lemma fp1: "Br_1 \ \ \\<^sup>f\<^sup>p \<^bold>\ \\<^sup>c" using Br_5b_def Int_br_def PB5b unfolding equal_op_def conn by fastforce +lemma fp2: "Br_1 \ \ \\<^sup>f\<^sup>p \<^bold>\ \\<^sup>c" using Br_5b_def Int_br_def PB5b conn equal_op_def by fastforce +lemma fp3: "Br_1 \ \ \\<^sup>f\<^sup>p \<^bold>\ \\<^sup>d" using Br_5c_def Cl_br_def PB5c dual_def unfolding equal_op_def conn by fastforce +lemma fp4: "Br_1 \ \ (\\<^sup>d)\<^sup>f\<^sup>p \<^bold>\ \" by (smt dimp_def equal_op_def fp3) +lemma fp5: "Br_1 \ \ \\<^sup>f\<^sup>p \<^bold>\ \ \<^bold>\ (\\<^sup>c)" by (smt Br_5b_def Cl_br_def Fr_br_def PB5b equal_op_def conn) + +text\\noindent{Define some fixed-point predicates and prove some properties.}\ +abbreviation openset ("Op") where "Op A \ fp \ A" +abbreviation closedset ("Cl") where "Cl A \ fp \ A" +abbreviation borderset ("Br") where "Br A \ fp \ A" +abbreviation frontierset ("Fr") where "Fr A \ fp \ A" + +lemma Int_Open: "Br_1 \ \ Br_3 \ \ \A. Op(\ A)" using IB4 IDEM_def by blast +lemma Cl_Closed: "Br_1 \ \ Br_3 \ \ \A. Cl(\ A)" using CB4 IDEM_def by blast +lemma Br_Border: "Br_1 \ \ \A. Br(\ A)" using IDEM_def PB6 by blast +text\\noindent{In contrast, there is no analogous fixed-point result for frontier:}\ +lemma "\ \ \ \A. Fr(\ A)" nitpick oops (*counterexample even if assuming all border conditions*) + +lemma OpCldual: "\A. Cl A \ Op(\<^bold>\A)" using Cl_br_def Int_br_def conn by auto +lemma ClOpdual: "\A. Op A \ Cl(\<^bold>\A)" using Cl_br_def Int_br_def conn by auto +lemma Fr_ClBr: "Br_1 \ \ \A. Fr(A) = (Cl(A) \ Br(A))" by (metis BF_rel Br_fr_def CF_rel Cl_fr_def eq_ext' join_def meet_def) +lemma Cl_F: "Br_1 \ \ Br_3 \ \ \A. Cl(\ A)" by (metis CF_rel Cl_fr_def FB4 Fr_4_def eq_ext' join_def) + +end diff --git a/thys/Topological_Semantics/topo_closure_algebra.thy b/thys/Topological_Semantics/topo_closure_algebra.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/topo_closure_algebra.thy @@ -0,0 +1,53 @@ +theory topo_closure_algebra + imports topo_operators_basic +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +section \Closure algebra\ +text\\noindent{We define a topological Boolean algebra with a primitive closure operator and verify a few properties.}\ + +text\\noindent{Declares a primitive (unconstrained) closure operation and defines others from it.}\ +consts \::"\\\" +abbreviation "\ \ \\<^sup>d" \\ interior \ +abbreviation "\ \ \\<^sub>C \" \\ border \ +abbreviation "\ \ \\<^sub>C \" \\ frontier \ + + +subsection \Basic properties\ + +text\\noindent{Verifies minimal conditions under which operators resulting from conversion functions coincide.}\ +lemma ICdual': "\ \<^bold>\ \\<^sup>d" using dual_symm equal_op_def by auto +lemma IB_rel: "Cl_2 \ \ \ \<^bold>\ \\<^sub>B \" using Br_cl_def EXP_dual1 Int_br_def compl_def dEXP_def diff_def dual_def equal_op_def meet_def by fastforce +lemma IF_rel: "Cl_2 \ \ \ \<^bold>\ \\<^sub>F \" by (smt EXP_def Fr_cl_def Int_fr_def compl_def diff_def dual_def equal_op_def meet_def) +lemma CB_rel: "Cl_2 \ \ \ \<^bold>\ \\<^sub>B \" by (smt Cl_br_def EXP_def IB_rel Int_br_def compl_def diff_def dual_def dual_symm eq_ext' equal_op_def join_def) +lemma CF_rel: "Cl_2 \ \ \ \<^bold>\ \\<^sub>F \" by (smt Br_cl_def CB_rel Cl_br_def Cl_fr_def Fr_cl_def equal_op_def join_def meet_def) +lemma BI_rel: "\ \<^bold>\ \\<^sub>I \" using BI_BC_rel dual_symm equal_op_def by metis +lemma BF_rel: "Cl_2 \ \ \ \<^bold>\ \\<^sub>F \" by (smt Br_cl_def Br_fr_def EXP_def Fr_cl_def equal_op_def meet_def) +lemma FI_rel: "\ \<^bold>\ \\<^sub>I \" by (metis FI2 Fr_2_def Fr_cl_def Fr_int_def ICdual' dual_def eq_ext' equal_op_def) +lemma FB_rel: "Cl_2 \ \ \ \<^bold>\ \\<^sub>B \" by (smt BF_rel Br_fr_def CB_rel Cl_br_def Fr_br_def Fr_cl_def equal_op_def join_def meet_def) + +text\\noindent{Fixed-point and other operators are interestingly related.}\ +lemma fp1: "Cl_2 \ \ \\<^sup>f\<^sup>p \<^bold>\ \\<^sup>c" by (smt BI_rel Br_int_def IB_rel Int_br_def compl_def diff_def dimp_def equal_op_def) +lemma fp2: "Cl_2 \ \ \\<^sup>f\<^sup>p \<^bold>\ \\<^sup>c" using fp1 by (smt compl_def dimp_def equal_op_def) +lemma fp3: "Cl_2 \ \ \\<^sup>f\<^sup>p \<^bold>\ \\<^sup>d" by (smt BI_rel Br_int_def CB_rel Cl_br_def compl_def diff_def dimp_def dual_def equal_op_def join_def) +lemma fp4: "Cl_2 \ \ (\\<^sup>d)\<^sup>f\<^sup>p \<^bold>\ \" by (smt dimp_def equal_op_def fp3) +lemma fp5: "Cl_2 \ \ \\<^sup>f\<^sup>p \<^bold>\ \ \<^bold>\ (\\<^sup>c)" by (smt Br_cl_def CF_rel Cl_fr_def FC2 Fr_2_def compl_def dimp_def eq_ext' equal_op_def join_def meet_def) + +text\\noindent{Define some fixed-point predicates and prove some properties.}\ +abbreviation openset ("Op") where "Op A \ fp \ A" +abbreviation closedset ("Cl") where "Cl A \ fp \ A" +abbreviation borderset ("Br") where "Br A \ fp \ A" +abbreviation frontierset ("Fr") where "Fr A \ fp \ A" + +lemma Int_Open: "Cl_4 \ \ \A. Op(\ A)" using IC4 IDEM_def by blast +lemma Cl_Closed: "Cl_4 \ \ \A. Cl(\ A)" by (simp add: IDEM_def) +lemma Br_Border: "Cl_1b \ \ \A. Br(\ A)" by (metis BI_rel Br_cl_def Br_int_def CI1b MULT_a_def diff_def eq_ext' meet_def) +text\\noindent{In contrast, there is no analogous fixed-point result for frontier:}\ +lemma "\ \ \ \A. Fr(\ A)" nitpick oops (*counterexample even if assuming all closure conditions*) + +lemma OpCldual: "\A. Cl A \ Op(\<^bold>\A)" by (simp add: compl_def dual_def) +lemma ClOpdual: "\A. Op A \ Cl(\<^bold>\A)" by (simp add: fp_d) +lemma Fr_ClBr: "Cl_2 \ \ \A. Fr(A) = (Cl(A) \ Br(A))" using BF_rel by (metis Br_fr_def CF_rel Cl_fr_def eq_ext' join_def meet_def) +lemma Cl_F: "Cl_1b \ \ Cl_2 \ \ Cl_4 \ \ \A. Cl(\ A)" using Cl_8_def Fr_cl_def PC8 by auto + +end diff --git a/thys/Topological_Semantics/topo_derivative_algebra.thy b/thys/Topological_Semantics/topo_derivative_algebra.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/topo_derivative_algebra.thy @@ -0,0 +1,204 @@ +theory topo_derivative_algebra + imports topo_operators_derivative +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +section \Derivative algebra\ +text\\noindent{The closure of a set A (@{text "\(A)"}) can be seen as the set A augmented by (i) its boundary points, or +(ii) its accumulation/limit points. We explore the second variant by drawing on the notion of derivative algebra.}\ + +text\\noindent{Declares a primitive (unconstrained) derivative (aka. derived-set) operation and defines others from it.}\ +consts \::"\\\" +abbreviation "\ \ \\<^sub>D \" \\ interior \ +abbreviation "\ \ \\<^sub>D \" \\ closure \ +abbreviation "\ \ \\<^sub>D \" \\ border \ +abbreviation "\ \ \\<^sub>D \" \\ frontier \ +abbreviation "\ \ \\<^sub>D \" \\ coherence \ + + +subsection \Basic properties\ + +text\\noindent{Verifies minimal conditions under which operators resulting from conversion functions coincide.}\ +lemma ICdual: "\ \<^bold>\ \\<^sup>d" by (simp add: dual_der2 equal_op_def) +lemma ICdual': "\ \<^bold>\ \\<^sup>d" by (simp add: dual_der1 equal_op_def) +lemma BI_rel: "\ \<^bold>\ \\<^sub>I \" using Br_der_def Br_int_def Int_der_def unfolding equal_op_def conn by auto +lemma IB_rel: "\ \<^bold>\ \\<^sub>B \" using Br_der_def Int_br_def Int_der_def unfolding equal_op_def conn by auto +lemma BC_rel: "\ \<^bold>\ \\<^sub>C \" using BI_BC_rel BI_rel dual_der1 by auto +lemma CB_rel: "\ \<^bold>\ \\<^sub>B \" using Br_der_def2 Cl_br_def Int_der_def2 dual_def dual_der1 unfolding equal_op_def conn by auto +lemma FI_rel: "\ \<^bold>\ \\<^sub>I \" by (metis Cl_der_def FI2 Fr_2_def Fr_der_def2 Fr_int_def ICdual' dual_def eq_ext' equal_op_def) +lemma FC_rel: "\ \<^bold>\ \\<^sub>C \" by (simp add: Cl_der_def Fr_cl_def Fr_der_def2 equal_op_def) +lemma FB_rel: "\ \<^bold>\ \\<^sub>B \" by (smt Br_der_def CB_rel Cl_br_def Cl_der_def Fr_br_def Fr_der_def Fr_der_def2 equal_op_def conn) + +text\\noindent{Recall that derivative and coherence operations cannot be obtained from either interior, closure, border +nor frontier. The derivative operation can indeed be seen as being more fundamental than the other ones.}\ + +text\\noindent{Fixed-point and other operators are interestingly related.}\ +lemma fp1: "\\<^sup>f\<^sup>p \<^bold>\ \\<^sup>c" by (smt BI_rel Br_int_def IB_rel Int_br_def equal_op_def conn) +lemma fp2: "\\<^sup>f\<^sup>p \<^bold>\ \\<^sup>c" using Br_der_def Int_der_def unfolding equal_op_def conn by auto +lemma fp3: "\\<^sup>f\<^sup>p \<^bold>\ \\<^sup>d" by (smt BI_rel Br_int_def CB_rel Cl_br_def dual_def equal_op_def conn) +lemma fp4: "(\\<^sup>d)\<^sup>f\<^sup>p \<^bold>\ \" by (smt dimp_def equal_op_def fp3) +lemma fp5: "\\<^sup>f\<^sup>p \<^bold>\ \ \<^bold>\ (\\<^sup>c)" using Br_der_def Cl_der_def Fr_der_def unfolding equal_op_def conn by auto +lemma fp6: "\\<^sup>f\<^sup>p \<^bold>\ \ \<^bold>\ (\\<^sup>c)" using Cl_der_def Kh_der_def equal_op_def conn by fastforce + +text\\noindent{Different inter-relations (some redundant ones are kept to help the provers).}\ +lemma monI: "Der_1b \ \ MONO \" by (simp add: ID1b MONO_MULTa) +lemma monC: "Der_1b \ \ MONO \" by (simp add: CD1b MONO_ADDIb) +lemma pB1: "\A. \ A \<^bold>\ A \<^bold>\ \ A" using BI_rel Br_int_def eq_ext' by fastforce +lemma pB2: "\A. \ A \<^bold>\ A \<^bold>\ \ A" using Br_der_def Fr_der_def conn by auto +lemma pB3: "\A. \(\<^bold>\A) \<^bold>\ \<^bold>\A \<^bold>\ \ A" using FD2 Fr_2_def meet_def pB2 by auto +lemma pB4: "\A. \(\<^bold>\A) \<^bold>\ \<^bold>\A \<^bold>\ \ A" by (simp add: dual_def dual_der1 pB1 conn) +lemma pB5: "Der_1b \ \ \A. \(\ A) \<^bold>\ (\ A) \<^bold>\ \(\<^bold>\A)" using ADDI_b_def Cl_der_def MONO_ADDIb monI pB1 pB4 unfolding conn by auto +lemma pF1: "\A. \ A \<^bold>\ \ A \<^bold>\ \ A" using Cl_der_def Fr_der_def Int_der_def conn by auto +lemma pF2: "\A. \ A \<^bold>\ \ A \<^bold>\ \(\<^bold>\A)" by (simp add: Cl_der_def Fr_der_def2) +lemma pF3: "\A. \ A \<^bold>\ \ A \<^bold>\ \(\<^bold>\A)" by (smt Br_der_def Cl_der_def dual_def dual_der1 dual_der2 pF2 conn) +lemma pF4: "Der_1 \ \ Der_4e \ \ \A. \(\ A) \<^bold>\ \ A" by (metis CD1 CD2 CD4a ICdual ID4 IDEM_def PC1 PC4 PC5 PD8 diff_def eq_ext' pF1) +lemma pF5: "Der_1 \ \ Der_4e \ \ \A. \(\ A) \<^bold>\ \ A" by (metis FD2 Fr_2_def ICdual' dual_def eq_ext' pF4) +lemma pA1: "\A. A \<^bold>\ \ A \<^bold>\ \ A" using Br_der_def2 Int_der_def2 conn by auto +lemma pA2: "\A. A \<^bold>\ \ A \<^bold>\ \(\<^bold>\A)" using Cl_der_def pB4 conn by auto +lemma pC1: "\A. \ A \<^bold>\ A \<^bold>\ \(\<^bold>\A)" using CB_rel Cl_br_def eq_ext' by fastforce +lemma pC2: "\A. \ A \<^bold>\ A \<^bold>\ \ A" using Cl_der_def Fr_der_def2 conn by auto +lemma pI1: "\A. \ A \<^bold>\ A \<^bold>\ \ A" using pA1 pB1 conn by auto +lemma pI2: "\A. \ A \<^bold>\ A \<^bold>\ \ A" using Br_der_def Fr_der_def pI1 conn by auto + +lemma IC_imp: "Der_1 \ \ Der_3 \ \ \A B. \(A \<^bold>\ B) \<^bold>\ \ A \<^bold>\ \ B" proof - + assume der1: "Der_1 \" and der3: "Der_3 \" + { fix a b + have "(a \<^bold>\ b) \<^bold>\ \<^bold>\b \<^bold>\ \<^bold>\a = \<^bold>\" unfolding conn by auto + hence "\((a \<^bold>\ b) \<^bold>\ \<^bold>\b \<^bold>\ \<^bold>\a) \<^bold>\ \(\<^bold>\)" by simp + hence "\((a \<^bold>\ b) \<^bold>\ \<^bold>\b \<^bold>\ \<^bold>\a) \<^bold>\ \<^bold>\" using der3 dNOR_def using ID3 by auto + moreover have "let A=(a \<^bold>\ b) \<^bold>\ \<^bold>\b; B=\<^bold>\a in \(A \<^bold>\ B) \<^bold>\ \(A) \<^bold>\ \(B)" using ID1 Int_7_def PI7 der1 by auto + ultimately have "\((a \<^bold>\ b) \<^bold>\ \<^bold>\b) \<^bold>\ \(\<^bold>\a) \<^bold>\ \<^bold>\" unfolding conn by simp + moreover have "let A=a \<^bold>\ b; B=\<^bold>\b in \(A \<^bold>\ B) \<^bold>\ \(A) \<^bold>\ \(B)" using ID1 MULT_def der1 by auto + ultimately have "\(a \<^bold>\ b) \<^bold>\ \(\<^bold>\b) \<^bold>\ \(\<^bold>\a) \<^bold>\ \<^bold>\" unfolding conn by simp + moreover have "\A. \(\<^bold>\A) \<^bold>\ \<^bold>\\(A)" by (simp add: dual_def dual_der1 conn) + ultimately have "\(a \<^bold>\ b) \<^bold>\ \<^bold>\\(b) \<^bold>\ \<^bold>\\(a) \<^bold>\ \<^bold>\" unfolding conn by simp + hence "\(a \<^bold>\ b) \<^bold>\ \<^bold>\\(b) \<^bold>\ \<^bold>\\(a)" unfolding conn by simp + hence "\(a \<^bold>\ b) \<^bold>\ \ a \<^bold>\ \ b" unfolding conn by metis + } thus ?thesis unfolding conn by simp +qed + +text\\noindent{Define some fixed-point predicates and prove some properties.}\ +abbreviation openset ("Op") where "Op A \ fp \ A" +abbreviation closedset ("Cl") where "Cl A \ fp \ A" +abbreviation borderset ("Br") where "Br A \ fp \ A" +abbreviation frontierset ("Fr") where "Fr A \ fp \ A" + +lemma Int_Open: "Der_1a \ \ Der_4e \ \ \A. Op(\ A)" using ID4a IDEM_def by blast +lemma Cl_Closed: "Der_1a \ \ Der_4e \ \ \A. Cl(\ A)" using CD4a IDEM_def by blast +lemma Br_Border: "Der_1b \ \ \A. Br(\ A)" by (smt Br_der_def CI1b IC1_dual PD1 conn) +text\\noindent{In contrast, there is no analogous fixed-point result for frontier:}\ +lemma "\
\ \ \A. Fr(\ A)" nitpick oops (*counterexample even if assuming all derivative conditions*) + +lemma OpCldual: "\A. Cl A \ Op(\<^bold>\A)" using dual_def dual_der1 conn by auto +lemma ClOpdual: "\A. Op A \ Cl(\<^bold>\A)" by (simp add: dual_def dual_der1 conn) +lemma Fr_ClBr: "\A. Fr(A) = (Cl(A) \ Br(A))" using join_def meet_def pB2 pC2 by auto +lemma Cl_F: "Der_1 \ \ Der_4e \ \ \A. Cl(\ A)" using FD4 Fr_4_def join_def pC2 by auto + + +subsection \Further properties\ + +text\\noindent{The definitions and theorems below are well known in the literature (e.g. @{cite Kuratowski2}). +Here we uncover the minimal conditions under which they hold (taking derivative operation as primitive).}\ +lemma Cl_Bzero: "\A. Cl A \ \(\<^bold>\A) \<^bold>\ \<^bold>\" using pA2 pC1 unfolding conn by metis +lemma Op_Bzero: "\A. Op A \ \ A \<^bold>\ \<^bold>\" using pB1 pI1 unfolding conn by metis +lemma Br_boundary: "\A. Br(A) \ \ A \<^bold>\ \<^bold>\" using Br_der_def2 Int_der_def2 unfolding conn by metis +lemma Fr_nowhereDense: "\A. Fr(A) \ \(\ A) \<^bold>\ \<^bold>\" using Fr_ClBr Br_boundary eq_ext by metis +lemma Cl_FB: "\A. Cl A \ \ A \<^bold>\ \ A" using Br_der_def2 pA2 pF1 pF3 unfolding conn by metis +lemma Op_FB: "\A. Op A \ \ A \<^bold>\ \(\<^bold>\A)" using pA1 pA2 pF3 pI2 unfolding conn by metis +lemma Clopen_Fzero: "\A. Cl A \ Op A \ \ A \<^bold>\ \<^bold>\" using Cl_der_def Int_der_def Fr_der_def unfolding conn by smt + +lemma Int_sup_closed: "Der_1b \ \ supremum_closed (\A. Op A)" by (smt IC1_dual ID1b Int_der_def2 PD1 sup_char diff_def) +lemma Int_meet_closed: "Der_1a \ \ meet_closed (\A. Op A)" by (metis ID1a Int_der_def MULT_b_def meet_def) +lemma Int_inf_closed: "Der_inf \ \ infimum_closed (\A. Op A)" by (simp add: fp_ID_inf_closed) +lemma Cl_inf_closed: "Der_1b \ \ infimum_closed (\A. Cl A)" by (smt Cl_der_def IC1_dual ID1b PD2 dual_der1 inf_char join_def) +lemma Cl_join_closed: "Der_1a \ \ join_closed (\A. Cl A)" using ADDI_a_def Cl_der_def join_def by fastforce +lemma Cl_sup_closed: "Der_inf \ \ supremum_closed (\A. Cl A)" by (simp add: fp_CD_sup_closed) +lemma Br_inf_closed: "Der_1b \ \ infimum_closed (\A. Br A)" by (smt Br_der_def CI1b IC1_dual PD1 inf_char diff_def) +lemma Fr_inf_closed: "Der_1b \ \ infimum_closed (\A. Fr A)" by (metis (full_types) Br_der_def Br_inf_closed Cl_der_def Cl_inf_closed Fr_der_def join_def diff_def) +lemma Br_Fr_join: "Der_1 \ \ Der_4e \ \ \A B. Br A \ Fr B \ Br(A \<^bold>\ B)" proof - + assume der1: "Der_1 \" and der4: "Der_4e \" + { fix A B + { assume bra: "Br A" and frb: "Fr B" + from bra have "\ A \<^bold>\ \<^bold>\" using Br_boundary by auto + hence 1: "\(\<^bold>\A) \<^bold>\ \<^bold>\" by (metis ICdual bottom_def compl_def dual_def eq_ext' top_def) + from frb have "\(\ B) \<^bold>\ \<^bold>\" by (simp add: Fr_nowhereDense) + hence 2: "\(\<^bold>\(\ B)) \<^bold>\ \<^bold>\" by (metis ICdual bottom_def compl_def dual_def eq_ext' top_def) + from der1 have "\(\<^bold>\A) \<^bold>\ \ B \<^bold>\ \((\<^bold>\A) \<^bold>\ B)" by (simp add: CD1 PD4) + hence "\(\<^bold>\A) \<^bold>\ \ B \<^bold>\ \(\<^bold>\(A \<^bold>\ B))" unfolding conn by simp + hence "\<^bold>\ \<^bold>\ \ B \<^bold>\ \(\<^bold>\(A \<^bold>\ B))" using 1 unfolding conn by simp + hence 3: "\<^bold>\(\ B) \<^bold>\ \(\<^bold>\(A \<^bold>\ B))" unfolding conn by simp + from der1 der4 have 4: "let M=\<^bold>\(\ B); N=\<^bold>\(A \<^bold>\ B) in M \<^bold>\ \ N \ \ M \<^bold>\ \ N" by (smt CD1b Cl_Closed PC1 PD1) + from 3 4 have "\(\<^bold>\(\ B)) \<^bold>\ \(\<^bold>\(A \<^bold>\ B))" by simp + hence "\<^bold>\ \<^bold>\ \(\<^bold>\(A \<^bold>\ B))" using 2 unfolding top_def by simp + hence "\<^bold>\ \<^bold>\ \(A \<^bold>\ B)" using ICdual dual_def eq_ext' conn by metis + hence "Br (A \<^bold>\ B)" using Br_boundary by simp + } hence "Br A \ Fr B \ Br (A \<^bold>\ B)" by simp + } hence "\A B. Br A \ Fr B \ Br (A \<^bold>\ B)" by simp + thus ?thesis by simp +qed +lemma Fr_join_closed: "Der_1 \ \ Der_4e \ \ join_closed (\A. Fr A)" by (simp add: Br_Fr_join Cl_join_closed Fr_ClBr PC1) + + +text\\noindent{Introduces a predicate for indicating that two sets are disjoint and proves some properties.}\ +abbreviation "Disj A B \ A \<^bold>\ B \<^bold>\ \<^bold>\" + +lemma Disj_comm: "\A B. Disj A B \ Disj B A" unfolding conn by fastforce +lemma Disj_IF: "\A. Disj (\ A) (\ A)" by (simp add: Cl_der_def Fr_der_def2 dual_def dual_der2 conn) +lemma Disj_B: "\A. Disj (\ A) (\(\<^bold>\A))" by (simp add: Br_der_def2 conn) +lemma Disj_I: "\A. Disj (\ A) (\<^bold>\A)" by (simp add: Int_der_def conn) +lemma Disj_BCI: "\A. Disj (\(\ A)) (\(\<^bold>\A))" by (simp add: Br_der_def2 dual_def dual_der1 conn) +lemma Disj_CBI: "Der_1b \ \ Der_4e \ \ \A. Disj (\(\(\<^bold>\A))) (\(\<^bold>\A))" by (smt Br_der_def2 Der_4e_def Cl_der_def Int_der_def2 PD3 conn) + +text\\noindent{Introduce a predicate for indicating that two sets are separated and proves some properties.}\ +definition "Sep A B \ Disj (\ A) B \ Disj (\ B) A" + +lemma Sep_comm: "\A B. Sep A B \ Sep B A" by (simp add: Sep_def) +lemma Sep_disj: "\A B. Sep A B \ Disj A B" using CD2 EXP_def Sep_def conn by auto +lemma Sep_I: "Der_1 \ \ Der_4e \ \ \A. Sep (\ A) (\ (\<^bold>\A))" unfolding Sep_def by (smt CD2 CD4 IC1 ID1 PC4 PC5 PD8 dual_def dual_der1 dual_der2 conn) + +lemma Sep_sub: "Der_1b \ \ \A B C D. Sep A B \ C \<^bold>\ A \ D \<^bold>\ B \ Sep C D" using MONO_ADDIb PD2 dual_der1 monI unfolding Sep_def conn by metis +lemma Sep_Cl_diff: "Der_1b \ \ \A B. Cl(A) \ Cl(B) \ Sep (A \<^bold>\ B) (B \<^bold>\ A)" unfolding Sep_def using CD1b PD1 bottom_def diff_def meet_def by smt +lemma Sep_Op_diff: "Der_1b \ \ \A B. Op(A) \ Op(B) \ Sep (A \<^bold>\ B) (B \<^bold>\ A)" proof - + assume der1b:"Der_1b \" + { fix A B + from der1b have aux: "let M=\<^bold>\A ; N=\<^bold>\B in (Cl(M) \ Cl(N) \ Sep (M \<^bold>\ N) (N \<^bold>\ M))" using Sep_Cl_diff by simp + { assume "Op(A) \ Op(B)" + hence "Cl(\<^bold>\A) \ Cl(\<^bold>\B)" using der1b ClOpdual by simp + hence "Sep (\<^bold>\A \<^bold>\ \<^bold>\B) (\<^bold>\B \<^bold>\ \<^bold>\A)" using der1b aux unfolding conn by simp + moreover have "(\<^bold>\A \<^bold>\ \<^bold>\B) \<^bold>\ (B \<^bold>\ A)" unfolding conn by auto + moreover have "(\<^bold>\B \<^bold>\ \<^bold>\A) \<^bold>\ (A \<^bold>\ B)" unfolding conn by auto + ultimately have "Sep (B \<^bold>\ A) (A \<^bold>\ B)" unfolding conn by simp + hence "Sep (A \<^bold>\ B) (B \<^bold>\ A)" using Sep_comm by simp + } hence "Op(A) \ Op(B) \ Sep (A \<^bold>\ B) (B \<^bold>\ A)" by (rule impI) + } thus ?thesis by simp +qed +lemma Sep_Cl: "\A B. Cl(A) \ Cl(B) \ Disj A B \ Sep A B" unfolding Sep_def conn by blast +lemma Sep_Op: "Der_1b \ \ \A B. Op(A) \ Op(B) \ Disj A B \ Sep A B" proof - + assume der1b:"Der_1b \" + { fix A B + from der1b have aux: "Op(A) \ Op(B) \ Sep (A \<^bold>\ B) (B \<^bold>\ A)" using Sep_Op_diff by simp + { assume op: "Op(A) \ Op(B)" and disj: "Disj A B" + hence "(A \<^bold>\ B) \<^bold>\ A \ (B \<^bold>\ A) \<^bold>\ B" unfolding conn by blast + hence "Sep A B" using op aux unfolding conn by simp + } hence "Op(A) \ Op(B) \ Disj A B \ Sep A B" by simp + } thus ?thesis by simp +qed +lemma "Der_1a \ \ \A B C. Sep A B \ Sep A C \ Sep A (B \<^bold>\ C)" using ADDI_a_def CD1a unfolding Sep_def conn by metis + + +text\\noindent{Verifies a neighborhood-based definition of interior.}\ +definition "nbhd A p \ \E. E \<^bold>\ A \ Op(E) \ (E p)" +lemma nbhd_def2: "Der_1 \ \ Der_4e \ \ \A p. (nbhd A p) = (\ A p)" unfolding nbhd_def by (smt Int_Open MONO_def PC1 monI pI2 conn) + +lemma I_def'_lr': "\A p. (\ A p) \ (\E. (\ E p) \ E \<^bold>\ A)" by blast +lemma I_def'_rl': "Der_1b \ \ \A p. (\ A p) \ (\E. (\ E p) \ E \<^bold>\ A)" using MONO_def monI by metis +lemma I_def': "Der_1b \ \ \A p. (\ A p) \ (\E. (\ E p) \ E \<^bold>\ A)" using MONO_def monI by metis + + +text\\noindent{Explore the Barcan and converse Barcan formulas.}\ +lemma Barcan_I: "Der_inf \ \ \P. (\<^bold>\x. \(P x)) \<^bold>\ \(\<^bold>\x. P x)" using ID_inf Barcan1 by auto +lemma Barcan_C: "Der_inf \ \ \P. \(\<^bold>\x. P x) \<^bold>\ (\<^bold>\x. \(P x))" using CD_inf Barcan2 by metis +lemma CBarcan_I: "Der_1b \ \ \P. \(\<^bold>\x. P x) \<^bold>\ (\<^bold>\x. \(P x))" by (metis (mono_tags, lifting) MONO_def monI) +lemma CBarcan_C: "Der_1b \ \ \P. (\<^bold>\x. \(P x)) \<^bold>\ \(\<^bold>\x. P x)" by (metis (mono_tags, lifting) MONO_def monC) + +end diff --git a/thys/Topological_Semantics/topo_frontier_algebra.thy b/thys/Topological_Semantics/topo_frontier_algebra.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/topo_frontier_algebra.thy @@ -0,0 +1,199 @@ +theory topo_frontier_algebra + imports topo_operators_basic +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +section \Frontier Algebra\ + +text\\noindent{The closure of a set A (@{text "\(A)"}) can be seen as the set A augmented by (i) its boundary points, +or (ii) its accumulation/limit points. In this section we explore the first variant by drawing on the notion +of a frontier algebra, defined in an analogous fashion as the well-known closure and interior algebras.}\ + +text\\noindent{Declares a primitive (unconstrained) frontier (aka. boundary) operation and defines others from it.}\ +consts \::"\\\" +abbreviation "\ \ \\<^sub>F \" \\ interior \ +abbreviation "\ \ \\<^sub>F \" \\ closure \ +abbreviation "\ \ \\<^sub>F \" \\ border \ + + +subsection \Basic properties\ + +text\\noindent{Verifies minimal conditions under which operators resulting from conversion functions coincide.}\ +lemma ICdual: "Fr_2 \ \ \ \<^bold>\ \\<^sup>d" by (simp add: Cl_fr_def Fr_2_def Int_fr_def dual_def equal_op_def conn) +lemma ICdual': "Fr_2 \ \ \ \<^bold>\ \\<^sup>d" by (simp add: Cl_fr_def Fr_2_def Int_fr_def dual_def equal_op_def conn) +lemma BI_rel: "\ \<^bold>\ \\<^sub>I \" using Br_fr_def Br_int_def Int_fr_def unfolding equal_op_def conn by auto +lemma IB_rel: "\ \<^bold>\ \\<^sub>B \" using Br_fr_def Int_br_def Int_fr_def unfolding equal_op_def conn by auto +lemma BC_rel: "Fr_2 \ \ \ \<^bold>\ \\<^sub>C \" using BI_BC_rel BI_rel ICdual' eq_ext' by fastforce +lemma CB_rel: "Fr_2 \ \ \ \<^bold>\ \\<^sub>B \" using Br_fr_def Cl_br_def Cl_fr_def Fr_2_def unfolding equal_op_def conn by auto +lemma FI_rel: "Fr_2 \ \ \ \<^bold>\ \\<^sub>I \" by (smt Cl_fr_def Fr_int_def ICdual' Int_fr_def compl_def diff_def equal_op_def join_def meet_def) +lemma FC_rel: "Fr_2 \ \ \ \<^bold>\ \\<^sub>C \" by (metis (mono_tags, lifting) FI_rel Fr_2_def Fr_cl_def Fr_int_def ICdual' dual_def eq_ext' equal_op_def) +lemma FB_rel: "Fr_2 \ \ \ \<^bold>\ \\<^sub>B \" by (smt Br_fr_def CB_rel Cl_br_def FC_rel Fr_br_def Fr_cl_def equal_op_def join_def meet_def) + +text\\noindent{Fixed-point and other operators are interestingly related.}\ +lemma fp1: "\\<^sup>f\<^sup>p \<^bold>\ \\<^sup>c" using Br_fr_def Int_fr_def unfolding equal_op_def conn by auto +lemma fp2: "\\<^sup>f\<^sup>p \<^bold>\ \\<^sup>c" using Br_fr_def Int_fr_def unfolding equal_op_def conn by auto +lemma fp3: "Fr_2 \ \ \\<^sup>f\<^sup>p \<^bold>\ \\<^sup>d" using Br_fr_def Cl_fr_def Fr_2_def dual_def equal_op_def conn by fastforce +lemma fp4: "Fr_2 \ \ (\\<^sup>d)\<^sup>f\<^sup>p \<^bold>\ \" by (smt dimp_def equal_op_def fp3) +lemma fp5: "\\<^sup>f\<^sup>p \<^bold>\ \ \<^bold>\ (\\<^sup>c)" using Br_fr_def Cl_fr_def unfolding equal_op_def conn by auto + +text\\noindent{Different inter-relations (some redundant ones are kept to help the provers).}\ +lemma monI: "Fr_1b \ \ MONO(\)" by (simp add: IF1a MONO_MULTa) +lemma monC: "Fr_6 \ \ MONO(\)" by (simp add: Cl_fr_def Fr_6_def MONO_def conn) +lemma pB1: "\A. \ A \<^bold>\ A \<^bold>\ \ A" using Br_fr_def fp1 unfolding conn equal_op_def by metis +lemma pB2: "\A. \ A \<^bold>\ A \<^bold>\ \ A" by (simp add: Br_fr_def) +lemma pB3: "Fr_2 \ \ \A. \(\<^bold>\A) \<^bold>\ \<^bold>\A \<^bold>\ \ A" by (simp add: Fr_2_def pB2 conn) +lemma pB4: "Fr_2 \ \ \A. \(\<^bold>\A) \<^bold>\ \<^bold>\A \<^bold>\ \ A" using CB_rel Cl_br_def pB3 unfolding conn equal_op_def by metis +lemma pB5: "Fr_1b \ \ Fr_2 \ \ \A. \(\ A) \<^bold>\ (\ A) \<^bold>\ \(\<^bold>\A)" by (smt BC_rel Br_cl_def Cl_fr_def Fr_6_def PF6 equal_op_def conn) +lemma pF1: "\A. \ A \<^bold>\ \ A \<^bold>\ \ A" using Cl_fr_def Int_fr_def conn by auto +lemma pF2: "Fr_2 \ \ \A. \ A \<^bold>\ \ A \<^bold>\ \(\<^bold>\A)" using Cl_fr_def Fr_2_def conn by auto +lemma pF3: "Fr_2 \ \ \A. \ A \<^bold>\ \ A \<^bold>\ \(\<^bold>\A)" using Br_fr_def Fr_2_def conn by auto +lemma pF4: "Fr_1 \ \ Fr_2 \ \ Fr_4(\) \ \A. \(\ A) \<^bold>\ \ A" by (smt IDEMa_def IF2 IF4 Int_fr_def MONO_def PF1 PF6 PI4 diff_def monC pF1) +lemma pF5: "Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ \A. \(\ A) \<^bold>\ \ A" by (metis Br_fr_def CF4 Cl_fr_def IDEM_def PF1 join_def meet_def pB5 pF3) +lemma pA1: "\A. A \<^bold>\ \ A \<^bold>\ \ A" using Br_fr_def Int_fr_def unfolding conn by auto +lemma pA2: "Fr_2 \ \ \A. A \<^bold>\ \ A \<^bold>\ \(\<^bold>\A)" using pB1 dual_def fp3 unfolding equal_op_def conn by smt +lemma pC1: "Fr_2 \ \ \A. \ A \<^bold>\ A \<^bold>\ \(\<^bold>\A)" using Cl_fr_def pB4 conn by auto +lemma pC2: "\A. \ A \<^bold>\ A \<^bold>\ \ A" using Cl_fr_def by auto +lemma pI1: "\A. \ A \<^bold>\ A \<^bold>\ \ A" using pA1 pB1 conn by auto +lemma pI2: "\A. \ A \<^bold>\ A \<^bold>\ \ A" by (simp add: Int_fr_def) + +lemma IC_imp: "Fr_1 \ \ Fr_2 \ \ Fr_3 \ \ \A B. \(A \<^bold>\ B) \<^bold>\ \ A \<^bold>\ \ B" proof - + assume fr1: "Fr_1 \" and fr2: "Fr_2 \" and fr3: "Fr_3 \" + { fix a b + have "(a \<^bold>\ b) \<^bold>\ \<^bold>\b \<^bold>\ \<^bold>\a = \<^bold>\" unfolding conn by auto + hence "\((a \<^bold>\ b) \<^bold>\ \<^bold>\b \<^bold>\ \<^bold>\a) \<^bold>\ \(\<^bold>\)" by simp + hence "\((a \<^bold>\ b) \<^bold>\ \<^bold>\b \<^bold>\ \<^bold>\a) \<^bold>\ \<^bold>\" using fr3 IF3 dNOR_def fr2 by auto + moreover have "let A=(a \<^bold>\ b) \<^bold>\ \<^bold>\b; B=\<^bold>\a in \(A \<^bold>\ B) \<^bold>\ \(A) \<^bold>\ \(B)" using fr1 IF1 PI7 Int_7_def by metis + ultimately have "\((a \<^bold>\ b) \<^bold>\ \<^bold>\b) \<^bold>\ \(\<^bold>\a) \<^bold>\ \<^bold>\" unfolding conn by simp + moreover have "let A=a \<^bold>\ b; B=\<^bold>\b in \(A \<^bold>\ B) \<^bold>\ \(A) \<^bold>\ \(B)" using fr1 IF1 MULT_def by simp + ultimately have "\(a \<^bold>\ b) \<^bold>\ \(\<^bold>\b) \<^bold>\ \(\<^bold>\a) \<^bold>\ \<^bold>\" unfolding conn by simp + moreover have "\A. \(\<^bold>\A) \<^bold>\ \<^bold>\\(A)" using Cl_fr_def Fr_2_def Int_fr_def fr2 unfolding conn by auto + ultimately have "\(a \<^bold>\ b) \<^bold>\ \<^bold>\\(b) \<^bold>\ \<^bold>\\(a) \<^bold>\ \<^bold>\" unfolding conn by simp + hence "\(a \<^bold>\ b) \<^bold>\ \<^bold>\\(b) \<^bold>\ \<^bold>\\(a)" unfolding conn by simp + hence "\(a \<^bold>\ b) \<^bold>\ \ a \<^bold>\ \ b" unfolding conn by metis + } thus ?thesis unfolding conn by simp +qed + +text\\noindent{Defines some fixed-point predicates and prove some properties.}\ +abbreviation openset ("Op") where "Op A \ fp \ A" +abbreviation closedset ("Cl") where "Cl A \ fp \ A" +abbreviation borderset ("Br") where "Br A \ fp \ A" +abbreviation frontierset ("Fr") where "Fr A \ fp \ A" + +lemma Int_Open: "Fr_1a \ \ Fr_2 \ \ Fr_4 \ \ \A. Op(\ A)" using IF4 IDEM_def by blast +lemma Cl_Closed: "Fr_1a \ \ Fr_2 \ \ Fr_4 \ \ \A. Cl(\ A)" using CF4 IDEM_def by blast +lemma Br_Border: "Fr_1b \ \ \A. Br(\ A)" using Br_fr_def Fr_1b_def conn by auto +text\\noindent{In contrast, there is no analogous fixed-point result for frontier:}\ +lemma "\ \ \ \A. Fr(\ A)" nitpick oops (*counterexample even if assuming all frontier conditions*) + +lemma OpCldual: "Fr_2 \ \ \A. Cl A \ Op(\<^bold>\A)" using Cl_fr_def Fr_2_def Int_fr_def conn by auto +lemma ClOpdual: "Fr_2 \ \ \A. Op A \ Cl(\<^bold>\A)" using ICdual dual_def unfolding equal_op_def conn by auto +lemma Fr_ClBr: "\A. Fr(A) = (Cl(A) \ Br(A))" using Br_fr_def Cl_fr_def join_def meet_def by auto +lemma Cl_F: "Fr_4 \ \ \A. Cl(\ A)" using Cl_fr_def Fr_4_def conn by auto + + +subsection \Further properties\ + +text\\noindent{The definitions and theorems below are well known in the literature (e.g. @{cite Kuratowski2}). +Here we uncover the minimal conditions under which they hold (taking frontier operation as primitive).}\ +lemma Cl_Bzero: "Fr_2 \ \ \A. Cl A \ \(\<^bold>\A) \<^bold>\ \<^bold>\" using pA2 pC1 unfolding conn by metis +lemma Op_Bzero: "\A. Op A \ (\ A) \<^bold>\ \<^bold>\" using pB1 pI1 unfolding conn by metis +lemma Br_boundary: "Fr_2 \ \ \A. Br(A) \ \ A \<^bold>\ \<^bold>\" by (metis Br_fr_def Int_fr_def bottom_def diff_def meet_def) +lemma Fr_nowhereDense: "Fr_2 \ \ \A. Fr(A) \ \(\ A) \<^bold>\ \<^bold>\" using Fr_ClBr Br_boundary eq_ext by metis +lemma Cl_FB: "\A. Cl A \ \ A \<^bold>\ \ A" using Br_fr_def Cl_fr_def unfolding conn by auto +lemma Op_FB: "Fr_2 \ \ \A. Op A \ \ A \<^bold>\ \(\<^bold>\A)" using Br_fr_def Fr_2_def Int_fr_def unfolding conn by auto +lemma Clopen_Fzero: "\A. Cl A \ Op A \ \ A \<^bold>\ \<^bold>\" using Cl_fr_def Int_fr_def unfolding conn by auto + +lemma Int_sup_closed: "Fr_1b \ \ supremum_closed (\A. Op A)" by (smt IF1a Int_fr_def MONO_def MONO_MULTa sup_char conn) +lemma Int_meet_closed: "Fr_1a \ \ meet_closed (\A. Op A)" using Fr_1a_def Int_fr_def unfolding conn by metis +lemma Int_inf_closed: "Fr_inf \ \ infimum_closed (\A. Op A)" by (simp add: fp_IF_inf_closed) +lemma Cl_inf_closed: "Fr_6 \ \ infimum_closed (\A. Cl A)" by (smt Cl_fr_def Fr_6_def infimum_def join_def) +lemma Cl_join_closed: "Fr_1a \ \ Fr_2 \ \ join_closed (\A. Cl A)" using ADDI_a_def CF1a CF2 EXP_def unfolding conn by metis +lemma Cl_sup_closed: "Fr_2 \ \ Fr_inf \ \ supremum_closed (\A. Cl A)" by (simp add: fp_CF_sup_closed) +lemma Br_inf_closed: "Fr_1b \ \ infimum_closed (\A. Br A)" by (smt BI_rel Br_int_def IF1a MONO_iMULTa MONO_MULTa Ra_restr_all eq_ext' iMULT_a_def inf_char diff_def) +lemma Fr_inf_closed: "Fr_1b \ \ Fr_2 \ \ infimum_closed (\A. Fr A)" by (metis (full_types) Br_fr_def Br_inf_closed PF6 Cl_fr_def Cl_inf_closed meet_def join_def) +lemma Br_Fr_join: "Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ \A B. Br A \ Fr B \ Br(A \<^bold>\ B)" proof - + assume fr1: "Fr_1 \" and fr2: "Fr_2 \" and fr4: "Fr_4 \" + { fix A B + { assume bra: "Br A" and frb: "Fr B" + from bra have "\ A \<^bold>\ \<^bold>\" using Br_boundary fr2 by auto + hence 1: "\(\<^bold>\A) \<^bold>\ \<^bold>\" by (metis ICdual bottom_def compl_def dual_def eq_ext' fr2 top_def) + from frb have "\(\ B) \<^bold>\ \<^bold>\" by (simp add: Fr_nowhereDense fr2) + hence 2: "\(\<^bold>\(\ B)) \<^bold>\ \<^bold>\" by (metis ICdual bottom_def compl_def dual_def eq_ext' fr2 top_def) + from fr1 fr2 have "\(\<^bold>\A) \<^bold>\ \ B \<^bold>\ \((\<^bold>\A) \<^bold>\ B)" using CF1 Cl_6_def PC6 by metis + hence "\(\<^bold>\A) \<^bold>\ \ B \<^bold>\ \(\<^bold>\(A \<^bold>\ B))" unfolding conn by simp + hence "\<^bold>\ \<^bold>\ \ B \<^bold>\ \(\<^bold>\(A \<^bold>\ B))" using 1 unfolding conn by simp + hence 3: "\<^bold>\(\ B) \<^bold>\ \(\<^bold>\(A \<^bold>\ B))" unfolding conn by simp + from fr1 fr2 fr4 have 4: "let M=\<^bold>\(\ B); N=\<^bold>\(A \<^bold>\ B) in M \<^bold>\ \ N \ \ M \<^bold>\ \ N" using PC9 CF4 Cl_9_def PF1 CF1b by fastforce + from 3 4 have "\(\<^bold>\(\ B)) \<^bold>\ \(\<^bold>\(A \<^bold>\ B))" by simp + hence "\<^bold>\ \<^bold>\ \(\<^bold>\(A \<^bold>\ B))" using 2 unfolding top_def by simp + hence "\<^bold>\ \<^bold>\ \(A \<^bold>\ B)" using fr2 ICdual dual_def eq_ext' conn by metis + hence "Br (A \<^bold>\ B)" using fr2 Br_boundary by simp + } hence "Br A \ Fr B \ Br (A \<^bold>\ B)" by simp + } hence "\A B. Br A \ Fr B \ Br (A \<^bold>\ B)" by simp + thus ?thesis by simp +qed +lemma Fr_join_closed: "Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ join_closed (\A. Fr A)" by (smt Br_Fr_join ADDI_a_def CF1a Cl_fr_def PF1 diff_def join_def meet_def pB2 pF1) + + +text\\noindent{Introduces a predicate for indicating that two sets are disjoint and proves some properties.}\ +abbreviation "Disj A B \ A \<^bold>\ B \<^bold>\ \<^bold>\" + +lemma Disj_comm: "\A B. Disj A B \ Disj B A" unfolding conn by fastforce +lemma Disj_IF: "\A. Disj (\ A) (\ A)" by (simp add: Int_fr_def conn) +lemma Disj_B: "\A. Disj (\ A) (\(\<^bold>\A))" using Br_fr_def unfolding conn by auto +lemma Disj_I: "\A. Disj (\ A) (\<^bold>\A)" by (simp add: Int_fr_def conn) +lemma Disj_BCI: "Fr_2 \ \ \A. Disj (\(\ A)) (\(\<^bold>\A))" using Br_fr_def Cl_fr_def Fr_2_def Int_fr_def conn by metis +lemma Disj_CBI: "Fr_6 \ \ Fr_4 \ \ \A. Disj (\(\(\<^bold>\A))) (\(\<^bold>\A))" by (metis Br_fr_def Cl_F IB_rel Int_br_def MONO_MULTa MULT_a_def eq_ext' monC conn) + +text\\noindent{Introduces a predicate for indicating that two sets are separated and proves some properties.}\ +definition "Sep A B \ Disj (\ A) B \ Disj (\ B) A" + +lemma Sep_comm: "\A B. Sep A B \ Sep B A" by (simp add: Sep_def) +lemma Sep_disj: "\A B. Sep A B \ Disj A B" using Cl_fr_def Sep_def conn by fastforce +lemma Sep_I: "Fr_1(\) \ Fr_2(\) \ Fr_4(\) \ \A. Sep (\ A) (\ (\<^bold>\A))" using Cl_fr_def pF4 Fr_2_def Int_fr_def unfolding Sep_def conn by metis +lemma Sep_sub: "Fr_6 \ \ \A B C D. Sep A B \ C \<^bold>\ A \ D \<^bold>\ B \ Sep C D" using MONO_def monC unfolding Sep_def conn by smt +lemma Sep_Cl_diff: "Fr_6 \ \ \A B. Cl(A) \ Cl(B) \ Sep (A \<^bold>\ B) (B \<^bold>\ A)" using Fr_6_def pC2 unfolding Sep_def conn by smt +lemma Sep_Op_diff: "Fr_1b \ \ Fr_2 \ \ \A B. Op(A) \ Op(B) \ Sep (A \<^bold>\ B) (B \<^bold>\ A)" proof - + assume fr1b:"Fr_1b \" and fr2:"Fr_2 \" + { fix A B + from fr1b fr2 have aux: "let M=\<^bold>\A ; N=\<^bold>\B in (Cl(M) \ Cl(N) \ Sep (M \<^bold>\ N) (N \<^bold>\ M))" using PF6 Sep_Cl_diff by simp + { assume "Op(A) \ Op(B)" + hence "Cl(\<^bold>\A) \ Cl(\<^bold>\B)" using fr2 ClOpdual by simp + hence "Sep (\<^bold>\A \<^bold>\ \<^bold>\B) (\<^bold>\B \<^bold>\ \<^bold>\A)" using fr1b fr2 aux unfolding conn by simp + moreover have "(\<^bold>\A \<^bold>\ \<^bold>\B) \<^bold>\ (B \<^bold>\ A)" unfolding conn by auto + moreover have "(\<^bold>\B \<^bold>\ \<^bold>\A) \<^bold>\ (A \<^bold>\ B)" unfolding conn by auto + ultimately have "Sep (B \<^bold>\ A) (A \<^bold>\ B)" unfolding conn by simp + hence "Sep (A \<^bold>\ B) (B \<^bold>\ A)" using Sep_comm by simp + } hence "Op(A) \ Op(B) \ Sep (A \<^bold>\ B) (B \<^bold>\ A)" by (rule impI) + } thus ?thesis by simp +qed +lemma Sep_Cl: "\A B. Cl(A) \ Cl(B) \ Disj A B \ Sep A B" unfolding Sep_def conn by blast +lemma Sep_Op: "Fr_1b \ \ Fr_2 \ \ \A B. Op(A) \ Op(B) \ Disj A B \ Sep A B" proof - + assume fr1b:"Fr_1b \" and fr2:"Fr_2 \" + { fix A B + from fr1b fr2 have aux: "Op(A) \ Op(B) \ Sep (A \<^bold>\ B) (B \<^bold>\ A)" using Sep_Op_diff by simp + { assume op: "Op(A) \ Op(B)" and disj: "Disj A B" + hence "(A \<^bold>\ B) \<^bold>\ A \ (B \<^bold>\ A) \<^bold>\ B" unfolding conn by blast + hence "Sep A B" using op aux unfolding conn by simp + } hence "Op(A) \ Op(B) \ Disj A B \ Sep A B" by simp + } thus ?thesis by simp +qed +lemma "Fr_1a \ \ Fr_2 \ \ \A B C. Sep A B \ Sep A C \ Sep A (B \<^bold>\ C)" using CF1a ADDI_a_def unfolding Sep_def conn by metis + + +text\\noindent{Verifies a neighborhood-based definition of closure.}\ +definition "nbhd A p \ \E. E \<^bold>\ A \ Op(E) \ (E p)" +lemma nbhd_def2: "Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ \A p. (nbhd A p) = (\ A p)" using pF4 MONO_def PF1 monI pI2 unfolding nbhd_def conn by smt + +lemma C_def_lr: "Fr_1b \ \ Fr_2 \ \ Fr_4 \ \ \A p. (\ A p) \ (\E. (nbhd E p) \ \(Disj E A))" using Cl_fr_def Fr_2_def Fr_6_def PF6 pF1 unfolding nbhd_def conn by smt +lemma C_def_rl: "Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ \A p. (\ A p) \ (\E. (nbhd E p) \ \(Disj E A))" using Cl_fr_def pF5 pA1 pB4 unfolding nbhd_def conn by smt +lemma C_def: "Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ \A p. (\ A p) \ (\E. (nbhd E p) \ \(Disj E A))" using C_def_lr C_def_rl PF1 by blast + + +text\\noindent{Explore the Barcan and converse Barcan formulas.}\ +lemma Barcan_I: "Fr_inf \ \ \P. (\<^bold>\x. \(P x)) \<^bold>\ \(\<^bold>\x. P x)" using IF_inf Barcan1 by auto +lemma Barcan_C: "Fr_2 \ \ Fr_inf \ \ \P. \(\<^bold>\x. P x) \<^bold>\ (\<^bold>\x. \(P x))" using Fr_2_def CF_inf Barcan2 by metis +lemma CBarcan_I: "Fr_1b \ \ \P. \(\<^bold>\x. P x) \<^bold>\ (\<^bold>\x. \(P x))" by (metis (mono_tags, lifting) MONO_def monI) +lemma CBarcan_C: "Fr_6 \ \ \P. (\<^bold>\x. \(P x)) \<^bold>\ \(\<^bold>\x. P x)" by (metis (mono_tags, lifting) MONO_def monC) + +end diff --git a/thys/Topological_Semantics/topo_interior_algebra.thy b/thys/Topological_Semantics/topo_interior_algebra.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/topo_interior_algebra.thy @@ -0,0 +1,53 @@ +theory topo_interior_algebra + imports topo_operators_basic +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +section \Interior algebra\ +text\\noindent{We define a topological Boolean algebra taking the interior operator as primitive and verify some properties.}\ + +text\\noindent{Declares a primitive (unconstrained) interior operation and defines others from it.}\ +consts \::"\\\" +abbreviation "\ \ \\<^sup>d" \\ closure \ +abbreviation "\ \ \\<^sub>I \" \\ border \ +abbreviation "\ \ \\<^sub>I \" \\ frontier \ + + +subsection \Basic properties\ + +text\\noindent{Verifies minimal conditions under which operators resulting from conversion functions coincide.}\ +lemma ICdual: "\ \<^bold>\ \\<^sup>d" using dual_symm equal_op_def by auto +lemma IB_rel: "Int_2 \ \ \ \<^bold>\ \\<^sub>B \" by (smt Br_int_def Int_br_def dEXP_def diff_def equal_op_def) +lemma IF_rel: "Int_2 \ \ \ \<^bold>\ \\<^sub>F \" using EXP_def EXP_dual2 Fr_int_def IB_rel Int_br_def Int_fr_def compl_def diff_def equal_op_def meet_def by fastforce +lemma CB_rel: "Int_2 \ \ \ \<^bold>\ \\<^sub>B \" using Br_int_def Cl_br_def EXP_def EXP_dual2 compl_def diff_def dual_def equal_op_def join_def by fastforce +lemma CF_rel: "Int_2 \ \ \ \<^bold>\ \\<^sub>F \" by (smt Cl_fr_def EXP_def EXP_dual2 Fr_int_def compl_def dEXP_def equal_op_def join_def meet_def) +lemma BC_rel: "\ \<^bold>\ \\<^sub>C \" by (simp add: BI_BC_rel equal_op_def) +lemma BF_rel: "Int_2 \ \ \ \<^bold>\ \\<^sub>F \" by (smt Br_fr_def Br_int_def IF_rel Int_fr_def diff_def equal_op_def meet_def) +lemma FC_rel: "\ \<^bold>\ \\<^sub>C \" using Fr_cl_def Fr_int_def compl_def dual_def equal_op_def meet_def by fastforce +lemma FB_rel: "Int_2 \ \ \ \<^bold>\ \\<^sub>B \" unfolding Fr_br_def by (smt BC_rel Br_cl_def CB_rel Cl_br_def FC_rel Fr_cl_def equal_op_def join_def meet_def) + +text\\noindent{Fixed-point and other operators are interestingly related.}\ +lemma fp1: "Int_2 \ \ \\<^sup>f\<^sup>p \<^bold>\ \\<^sup>c" by (smt Br_int_def IB_rel Int_br_def compl_def diff_def dimp_def equal_op_def) +lemma fp2: "Int_2 \ \ \\<^sup>f\<^sup>p \<^bold>\ \\<^sup>c" using fp1 unfolding compl_def dimp_def equal_op_def by smt +lemma fp3: "Int_2 \ \ \\<^sup>f\<^sup>p \<^bold>\ \\<^sup>d" by (metis (no_types) dual_comp eq_ext' fp2 ofp_c ofp_d ofp_invol) +lemma fp4: "Int_2 \ \ (\\<^sup>d)\<^sup>f\<^sup>p \<^bold>\ \" by (smt dimp_def equal_op_def fp3) +lemma fp5: "Int_2 \ \ \\<^sup>f\<^sup>p \<^bold>\ \ \<^bold>\ (\\<^sup>c)" by (smt BC_rel Br_cl_def CF_rel Cl_fr_def FI2 Fr_2_def compl_def dimp_def eq_ext' equal_op_def join_def meet_def) + +text\\noindent{Define some fixed-point predicates and prove some properties.}\ +abbreviation openset ("Op") where "Op A \ fp \ A" +abbreviation closedset ("Cl") where "Cl A \ fp \ A" +abbreviation borderset ("Br") where "Br A \ fp \ A" +abbreviation frontierset ("Fr") where "Fr A \ fp \ A" + +lemma Int_Open: "Int_4 \ \ \A. Op(\ A)" by (simp add: IDEM_def) +lemma Cl_Closed: "Int_4 \ \ \A. Cl(\ A)" using IC4 IDEM_def by blast +lemma Br_Border: "Int_1a \ \ \A. Br(\ A)" by (metis Br_int_def MONO_MULTa MONO_def diff_def) +text\\noindent{In contrast, there is no analogous fixed-point result for frontier:}\ +lemma "\ \ \ \A. Fr(\ A)" nitpick oops (*counterexample even if assuming all interior conditions*) + +lemma OpCldual: "\A. Cl A \ Op(\<^bold>\A)" by (simp add: fp_d) +lemma ClOpdual: "\A. Op A \ Cl(\<^bold>\A)" by (simp add: compl_def dual_def) +lemma Fr_ClBr: "Int_2 \ \ \A. Fr(A) = (Cl(A) \ Br(A))" using BF_rel Br_fr_def CF_rel Cl_fr_def eq_ext' join_def meet_def by fastforce +lemma Cl_F: "Int_1a \ \ Int_2 \ \ Int_4 \ \ \A. Cl(\ A)" by (metis CF_rel Cl_fr_def FI4 Fr_4_def eq_ext' join_def) + +end diff --git a/thys/Topological_Semantics/topo_negation_conditions.thy b/thys/Topological_Semantics/topo_negation_conditions.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/topo_negation_conditions.thy @@ -0,0 +1,267 @@ +theory topo_negation_conditions + imports topo_frontier_algebra sse_operation_negative_quantification +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +section \Frontier-based negation - Semantic conditions\ + +text\\noindent{We define a paracomplete and a paraconsistent negation employing the interior and closure operation resp. +We take the frontier operator as primitive and explore which semantic conditions are minimally required +to obtain some relevant properties of negation.}\ + +definition neg_I::"\\\" ("\<^bold>\\<^sup>I") where "\<^bold>\\<^sup>I A \ \(\<^bold>\A)" +definition neg_C::"\\\" ("\<^bold>\\<^sup>C") where "\<^bold>\\<^sup>C A \ \(\<^bold>\A)" +declare neg_I_def[conn] neg_C_def[conn] + +text\\noindent{(We rename the meta-logical HOL negation to avoid terminological confusion)}\ +abbreviation cneg::"bool\bool" ("\_" [40]40) where "\\ \ \\" + +subsection \'Explosion' (ECQ), non-contradiction (LNC) and excluded middle (TND)\ + +text\\noindent{TND}\ +lemma "\ \ \ TNDm \<^bold>\\<^sup>I" nitpick oops (*minimally weak TND not valid*) +lemma TND_C: "TND \<^bold>\\<^sup>C" by (simp add: pC2 Defs conn) (*TND valid in general*) + +text\\noindent{ECQ}\ +lemma ECQ_I: "ECQ \<^bold>\\<^sup>I" by (simp add: pI2 Defs conn) (*ECQ valid in general*) +lemma "\ \ \ ECQm \<^bold>\\<^sup>C" nitpick oops (*minimally weak ECQ not valid*) + +text\\noindent{LNC}\ +lemma "LNC \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma LNC_I: "Fr_2 \ \ Fr_3 \ \ LNC \<^bold>\\<^sup>I" using ECQ_I ECQ_def IF3 LNC_def dNOR_def unfolding conn by auto +lemma "LNC \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma LNC_C: "Fr_6 \ \ LNC \<^bold>\\<^sup>C" unfolding Defs by (smt Cl_fr_def MONO_def compl_def join_def meet_def monC neg_C_def top_def) + +text\\noindent{Relations between LNC and different ECQ variants (only relevant for paraconsistent negation).}\ +lemma "ECQ \<^bold>\\<^sup>C \ LNC \<^bold>\\<^sup>C" by (simp add: pC2 Defs conn) +lemma ECQw_LNC: "ECQw \<^bold>\\<^sup>C \ LNC \<^bold>\\<^sup>C" by (smt ECQw_def LNC_def pC2 conn) +lemma ECQm_LNC: "Fr_1 \ \ Fr_2 \ \ ECQm \<^bold>\\<^sup>C \ LNC \<^bold>\\<^sup>C" using Cl_fr_def Fr_1_def pF2 unfolding Defs conn by metis +lemma "\ \ \ LNC \<^bold>\\<^sup>C \ ECQm \<^bold>\\<^sup>C" nitpick oops (*countermodel*) + +text\\noindent{Below we show that enforcing all conditions on the frontier operator still leaves room +for both boldly paraconsistent and paracomplete models. We use Nitpick to generate a non-trivial +model (here a set algebra with 8 elements).}\ +lemma "\ \ \ \ECQm \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops (*boldly paraconsistent model found*) +lemma "\ \ \ \TNDm \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops (*boldly paracomplete model found*) + + +subsection \Modus tollens (MT)\ + +text\\noindent{MT-I}\ +lemma MT0_I: "Fr_1b \ \ MT0 \<^bold>\\<^sup>I" unfolding Defs by (smt MONO_def compl_def monI neg_I_def top_def) +lemma MT1_I: "Fr_1b \ \ Fr_2 \ \ Fr_3 \ \ MT1 \<^bold>\\<^sup>I" unfolding Defs by (metis MONO_def monI IF3 Int_fr_def compl_def dNOR_def diff_def neg_I_def top_def) +lemma "\ \ \ MT2 \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ MT2 \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\TNDm \<^bold>\\<^sup>I \ Fr_1a \ \ Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ MT2 \<^bold>\\<^sup>I" nitpick[satisfy] oops +lemma "\TNDm \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ MT2 \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\TNDm \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_3 \ \ Fr_4 \ \ MT2 \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\ \ \ MT3 \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "\TNDm \<^bold>\\<^sup>I \ Fr_1a \ \ Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ MT3 \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\TNDm \<^bold>\\<^sup>I \ MT0 \<^bold>\\<^sup>I \ MT1 \<^bold>\\<^sup>I \ MT2 \<^bold>\\<^sup>I \ MT3 \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +text\\noindent{MT-C}\ +lemma "Fr_2 \ \ MT0 \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma MT0_C: "Fr_6 \ \ MT0 \<^bold>\\<^sup>C" unfolding Defs by (smt ICdual MONO_def compl_def monC neg_C_def top_def) +lemma MT1_C: "Fr_6 \ \ MT1 \<^bold>\\<^sup>C" unfolding Defs by (smt Cl_fr_def Fr_6_def conn) +lemma "\ \ \ MT2 \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "\ECQm \<^bold>\\<^sup>C \ \ \ \ MT2 \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops (*model found*) +lemma MT3_C: "Fr_1b \ \ Fr_2 \ \ Fr_3 \ \ MT3 \<^bold>\\<^sup>C" unfolding Defs using MONO_def monI by (metis ClOpdual IF3 compl_def dNOR_def diff_def neg_C_def pA2 top_def) +lemma "\ECQm \<^bold>\\<^sup>C \ MT0 \<^bold>\\<^sup>C \ MT1 \<^bold>\\<^sup>C \ MT2 \<^bold>\\<^sup>C \ MT3 \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops + + +subsection \Contraposition rules (CoP)\ + +text\\noindent{CoPw-I}\ +lemma "CoPw \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma CoPw_I: "Fr_1b \ \ CoPw \<^bold>\\<^sup>I" unfolding Defs conn by (metis (no_types, lifting) MONO_def monI) +text\\noindent{CoPw-C}\ +lemma "CoPw \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma CoPw_C: "Fr_6 \ \ CoPw \<^bold>\\<^sup>C" by (smt CoPw_def MONO_def monC conn) + +text\\noindent{We can indeed prove that XCoP is entailed by CoP1 (CoP2) in the particular case of a closure- (interior-)based negation.}\ +lemma CoP1_XCoP: "CoP1 \<^bold>\\<^sup>C \ XCoP \<^bold>\\<^sup>C" by (metis XCoP_def2 CoP1_def CoP1_def2 DM2_CoPw DM2_def ECQw_def TND_C TND_def TNDw_def top_def) +lemma CoP2_XCoP: "CoP2 \<^bold>\\<^sup>I \ XCoP \<^bold>\\<^sup>I" by (smt XCoP_def2 CoP2_DM3 CoP2_def2 CoPw_def DM3_def DNE_def ECQ_I ECQ_def ECQw_def TNDw_def bottom_def join_def) + +text\\noindent{CoP1-I}\ +lemma "\ \ \ CoP1 \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "\TNDm \<^bold>\\<^sup>I \ \ \ \ CoP1 \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +text\\noindent{CoP1-C}\ +lemma "\ \ \ CoP1 \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "\ECQ \<^bold>\\<^sup>C \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ CoP1 \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops +lemma "CoP1 \<^bold>\\<^sup>C \ ECQm \<^bold>\\<^sup>C" using XCoP_def2 CoP1_XCoP ECQm_def ECQw_def by blast + +text\\noindent{CoP2-I}\ +lemma "\ \ \ CoP2 \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ CoP2 \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_3 \ \ Fr_4 \ \ CoP2 \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "CoP2 \<^bold>\\<^sup>I \ TNDm \<^bold>\\<^sup>I" using XCoP_def2 CoP2_XCoP TNDm_def TNDw_def by auto +text\\noindent{CoP2-C}\ +lemma "\ \ \ CoP2 \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "\ECQm \<^bold>\\<^sup>C \ \ \ \ CoP2 \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops + +text\\noindent{CoP3-I}\ +lemma "\ \ \ CoP3 \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "\TND \<^bold>\\<^sup>I \ CoP3 \<^bold>\\<^sup>I" (*nitpick[satisfy]*) oops (*cannot find (finite) models*) +text\\noindent{CoP3-C}\ +lemma "\ \ \ CoP3 \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "\ECQ \<^bold>\\<^sup>C \ CoP3 \<^bold>\\<^sup>C" (*nitpick[satisfy]*) oops (*cannot find (finite) models*) + +text\\noindent{XCoP-I}\ +lemma "\ \ \ XCoP \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ XCoP \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_3 \ \ Fr_4 \ \ XCoP \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "XCoP \<^bold>\\<^sup>I \ TNDm \<^bold>\\<^sup>I" by (simp add: XCoP_def2 TNDm_def TNDw_def) +text\\noindent{XCoP-C}\ +lemma "\ \ \ XCoP \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "\ECQ \<^bold>\\<^sup>C \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ XCoP \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops +lemma "XCoP \<^bold>\\<^sup>C \ ECQm \<^bold>\\<^sup>C" by (simp add: XCoP_def2 ECQm_def ECQw_def) + + +subsection \Normality (negative) and its dual (nNor/nDNor)\ + +text\\noindent{nNor-I}\ +lemma "nNor \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma nNor_I: "Fr_2 \ \ Fr_3 \ \ nNor \<^bold>\\<^sup>I" using IF3 dNOR_def unfolding Defs conn by auto +text\\noindent{nNor-C}\ +lemma nNor_C: "nNor \<^bold>\\<^sup>C" unfolding Cl_fr_def Defs conn by simp + +text\\noindent{nDNor-I}\ +lemma nDNor_I: "nDNor \<^bold>\\<^sup>I" unfolding Int_fr_def Defs conn by simp +text\\noindent{nDNor-C}\ +lemma "nDNor \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma nDNor_C: "Fr_3 \ \ nDNor \<^bold>\\<^sup>C" using pC2 NOR_def unfolding Defs conn by simp + + +subsection \Double negation introduction/elimination (DNI/DNE)\ + +text\\noindent{DNI-I}\ +lemma "\ \ \ DNI \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "\TNDm \<^bold>\\<^sup>I \ \ \ \ DNI \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +text\\noindent{DNI-C}\ +lemma "\ \ \ DNI \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "\ECQ \<^bold>\\<^sup>C \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ DNI \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops +lemma "\ECQm \<^bold>\\<^sup>C \ Fr_1 \ \ Fr_3 \ \ Fr_4 \ \ DNI \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops +lemma "\ECQm \<^bold>\\<^sup>C \ Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ DNI \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops + +text\\noindent{DNE-I}\ +lemma "\ \ \ DNE \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ DNE \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_3 \ \ Fr_4 \ \ DNE \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\TNDm \<^bold>\\<^sup>I \ Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ DNE \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\TND \<^bold>\\<^sup>I \ DNE \<^bold>\\<^sup>I \ DNI \<^bold>\\<^sup>I" (*nitpick[satisfy]*) oops (*cannot find (finite) models*) +text\\noindent{DNE-C}\ +lemma "\ \ \ DNE \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "\ECQm \<^bold>\\<^sup>C \ \ \ \ DNE \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops + +lemma "\ECQ \<^bold>\\<^sup>C \ DNE \<^bold>\\<^sup>C \ DNI \<^bold>\\<^sup>C" (*nitpick[satisfy]*) oops (*cannot find (finite) models*) + +text\\noindent{rDNI-I}\ +lemma "Fr_2 \ \ Fr_3 \ \ rDNI \<^bold>\\<^sup>I" using nNor_I nDNor_I nDNor_rDNI by simp +text\\noindent{rDNI-C}\ +lemma "Fr_3 \ \ rDNI \<^bold>\\<^sup>C" using nNor_C nDNor_C nDNor_rDNI by simp + +text\\noindent{rDNE-I}\ +lemma "\ \ \ rDNE \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "\TNDm \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ rDNE \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\TNDm \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_3 \ \ Fr_4 \ \ rDNE \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\TNDm \<^bold>\\<^sup>I \ Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ rDNE \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +text\\noindent{rDNE-C}\ +lemma "\ \ \ rDNE \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "\ECQm \<^bold>\\<^sup>C \ \ \ \ rDNE \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops + +lemma "\ECQm \<^bold>\\<^sup>C \ rDNE \<^bold>\\<^sup>C \ rDNI \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops + + +subsection \De Morgan laws\ + +text\\noindent{DM1/2 (see CoPw)}\ + +text\\noindent{DM3-I}\ +lemma "\ \ \ DM3 \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ DM3 \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_3 \ \ Fr_4 \ \ DM3 \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\TNDm \<^bold>\\<^sup>I \ DM3 \<^bold>\\<^sup>I" (*nitpick[satisfy]*) oops (*cannot find (finite) models*) +text\\noindent{DM3-C}\ +lemma "DM3 \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma DM3_C: "Fr_1a \ \ Fr_2 \ \ DM3 \<^bold>\\<^sup>C" using DM3_def Fr_1a_def pA2 pF2 unfolding conn by smt +lemma "\ECQm \<^bold>\\<^sup>C \ \ \ \ DM3 \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops + +text\\noindent{DM4-I}\ +lemma "DM4 \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma DM4_I: "Fr_1a \ \ DM4 \<^bold>\\<^sup>I" using ADDI_a_def Cl_fr_def DM4_def IC1b IF1b dual_def unfolding conn by smt +lemma "\TNDm \<^bold>\\<^sup>I \ \ \ \ DM4 \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +text\\noindent{DM4-C}\ +lemma "\ \ \ DM4 \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "\ECQ \<^bold>\\<^sup>C \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ DM4 \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops +lemma "\ECQm \<^bold>\\<^sup>C \ DM4 \<^bold>\\<^sup>C" (*nitpick[satisfy]*) oops (*cannot find (finite) models*) + +text\\noindent{iDM1/2 (see CoPw)}\ + +text\\noindent{iDM3-I}\ +lemma "\ \ \ Fr_inf \ \ iDM3 \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ iDM3 \<^bold>\\<^sup>I" nitpick[satisfy] oops +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_3 \ \ Fr_4 \ \ iDM3 \<^bold>\\<^sup>I" nitpick[satisfy] oops +lemma "\TNDm \<^bold>\\<^sup>I \ iDM3 \<^bold>\\<^sup>I" (*nitpick[satisfy]*) oops (*cannot find (finite) models*) +text\\noindent{iDM3-C}\ +lemma "iDM3 \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma iDM3_C: "Fr_2 \ \ Fr_inf \ \ iDM3 \<^bold>\\<^sup>C" unfolding Defs by (metis (full_types) CF_inf Ra_restr_ex dom_compl_def iADDI_a_def iDM_a neg_C_def) +text\\noindent{iDM4-I}\ +lemma "iDM4 \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma iDM4_I: "Fr_inf \ \ iDM4 \<^bold>\\<^sup>I" unfolding Defs by (metis IF_inf Ra_restr_all dom_compl_def iDM_b iMULT_b_def neg_I_def) +text\\noindent{iDM4-C}\ +lemma "\ \ \ Fr_inf \ \ iDM4 \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "\ECQ \<^bold>\\<^sup>C \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ iDM4 \<^bold>\\<^sup>C" nitpick[satisfy] oops +lemma "\ECQm \<^bold>\\<^sup>C \ iDM4 \<^bold>\\<^sup>C" (*nitpick[satisfy]*) oops (*cannot find (finite) models*) + + +subsection \Local contraposition axioms (lCoP)\ + +text\\noindent{lCoPw-I}\ +lemma "\ \ \ lCoPw(\<^bold>\) \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ lCoPw(\<^bold>\) \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_3 \ \ Fr_4 \ \ lCoPw(\<^bold>\) \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "lCoPw(\<^bold>\) \<^bold>\\<^sup>I \ TNDm \<^bold>\\<^sup>I" by (simp add: XCoP_def2 TNDm_def TNDw_def lCoPw_XCoP) +text\\noindent{lCoPw-C}\ +lemma "\ \ \ lCoPw(\<^bold>\) \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "\ECQ \<^bold>\\<^sup>C \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ lCoPw(\<^bold>\) \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops +lemma "lCoPw(\<^bold>\) \<^bold>\\<^sup>C \ ECQm \<^bold>\\<^sup>C" by (simp add: XCoP_def2 ECQm_def ECQw_def lCoPw_XCoP) + +text\\noindent{lCoP1-I}\ +lemma "\ \ \ lCoP1(\<^bold>\) \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "lCoP1(\<^bold>\) \<^bold>\\<^sup>I \ TND \<^bold>\\<^sup>I" by (simp add: lCoP1_TND) +text\\noindent{lCoP1-C}\ +lemma "\ \ \ lCoP1(\<^bold>\) \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "\ECQ \<^bold>\\<^sup>C \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ lCoP1(\<^bold>\) \<^bold>\\<^sup>C" nitpick[satisfy,card w=3] oops +lemma "lCoP1(\<^bold>\) \<^bold>\\<^sup>C \ ECQm \<^bold>\\<^sup>C" by (simp add: XCoP_def2 ECQm_def ECQw_def lCoP1_def2 lCoPw_XCoP) + +text\\noindent{lCoP2-I}\ +lemma "\ \ \ lCoP2(\<^bold>\) \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ lCoP2(\<^bold>\) \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "\TND \<^bold>\\<^sup>I \ Fr_1 \ \ Fr_3 \ \ Fr_4 \ \ lCoP2(\<^bold>\) \<^bold>\\<^sup>I" nitpick[satisfy,card w=3] oops +lemma "lCoP2(\<^bold>\) \<^bold>\\<^sup>I \ TNDm \<^bold>\\<^sup>I" by (simp add: XCoP_def2 TNDm_def TNDw_def lCoP2_def2 lCoPw_XCoP) +text\\noindent{lCoP2-C}\ +lemma "\ \ \ lCoP2(\<^bold>\) \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "lCoP2(\<^bold>\) \<^bold>\\<^sup>C \ ECQ \<^bold>\\<^sup>C" by (simp add: lCoP2_ECQ) + +text\\noindent{lCoP3-I}\ +lemma "\ \ \ lCoP3(\<^bold>\) \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "lCoP3(\<^bold>\) \<^bold>\\<^sup>I \ TND \<^bold>\\<^sup>I" unfolding Defs conn by metis +text\\noindent{lCoP3-C}\ +lemma "\ \ \ lCoP3(\<^bold>\) \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "lCoP3(\<^bold>\) \<^bold>\\<^sup>C \ ECQ \<^bold>\\<^sup>C" unfolding Defs conn by metis + + +subsection \Disjunctive syllogism\ + +text\\noindent{DS1-I}\ +lemma "DS1(\<^bold>\) \<^bold>\\<^sup>I" using DS1_def ECQ_I ECQ_def unfolding conn by auto +text\\noindent{DS1-C}\ +lemma "\ \ \ DS1(\<^bold>\) \<^bold>\\<^sup>C" nitpick oops (*countermodel*) +lemma "DS1(\<^bold>\) \<^bold>\\<^sup>C \ ECQ \<^bold>\\<^sup>C" unfolding Defs conn by metis + +text\\noindent{DS2-I}\ +lemma "\ \ \ DS2(\<^bold>\) \<^bold>\\<^sup>I" nitpick oops (*countermodel*) +lemma "DS2(\<^bold>\) \<^bold>\\<^sup>I \ TND \<^bold>\\<^sup>I" by (simp add: Defs conn) +text\\noindent{DS2-C}\ +lemma "DS2(\<^bold>\) \<^bold>\\<^sup>C" using TND_C unfolding Defs conn by auto + +end diff --git a/thys/Topological_Semantics/topo_negation_fixedpoints.thy b/thys/Topological_Semantics/topo_negation_fixedpoints.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/topo_negation_fixedpoints.thy @@ -0,0 +1,156 @@ +theory topo_negation_fixedpoints + imports topo_frontier_algebra sse_operation_negative_quantification +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +section \Frontier-based negation - Fixed-points\ + +text\\noindent{We define a paracomplete and a paraconsistent negation employing the interior and the closure operation +respectively. We explore the use of fixed-point predicates to recover some relevant properties of negation, +many of which cannot be readily recovered by just adding semantic conditions. +We take the frontier operator as primitive and explore which semantic conditions are minimally required.}\ + +definition neg_I::"\\\" ("\<^bold>\\<^sup>I") where "\<^bold>\\<^sup>I \ \ \(\<^bold>\\)" +definition neg_C::"\\\" ("\<^bold>\\<^sup>C") where "\<^bold>\\<^sup>C \ \ \(\<^bold>\\)" +declare neg_I_def[conn] neg_C_def[conn] + +text\\noindent{Note that all results obtained for fixed-point predicates extend to their associated operators as follows:}\ +lemma "\A. \\<^sup>f\<^sup>p(A) \<^bold>\ \(A) \<^bold>\ \(A) \ \A. (fp \)(A) \ \(A) \<^bold>\ \(A)" unfolding conn by simp +lemma "\A B. \\<^sup>f\<^sup>p(A) \<^bold>\ \\<^sup>f\<^sup>p(B) \<^bold>\ (\ A B) \<^bold>\ (\ A B) \ \A B. (fp \)(A) \ (fp \)(B) \ (\ A B) \<^bold>\ (\ A B)" unfolding conn by simp + +text\\noindent{Recall from previous results that if we have Fr(A) then we also have both Cl(A) and Br(A). +With this understanding we will tacitly assume the corresponding results for Fr(-) below. +Moreover, we obtained countermodels (using Nitpick) for all formulas featuring other combinations (not shown).}\ + + +subsection \'Explosion' (ECQ) and excluded middle (TND)\ + +text\\noindent{TND-I}\ +lemma "Fr_2 \ \ \A. Cl(A) \ TND\<^sup>A \<^bold>\\<^sup>I" by (simp add: OpCldual conn) +text\\noindent{ECQ-C}\ +lemma "Fr_2 \ \ \A. Op(A) \ ECQ\<^sup>A \<^bold>\\<^sup>C" using Cl_fr_def Int_fr_def pF2 unfolding conn by fastforce + + +subsection \Contraposition rules\ + +text\\noindent{CoPw-I}\ +lemma "\A B. Br(\<^bold>\B) \ CoPw\<^sup>A\<^sup>B \<^bold>\\<^sup>I" using Int_fr_def pB1 conn by auto +lemma "Fr_2 \ \ \A B. Cl(A) \ CoPw\<^sup>A\<^sup>B \<^bold>\\<^sup>I" using Int_fr_def OpCldual conn by auto +text\\noindent{CoPw-C}\ +lemma "Fr_2 \ \ \A B. Br(A) \ CoPw\<^sup>A\<^sup>B \<^bold>\\<^sup>C" using pA2 pB2 pF2 unfolding conn by metis +lemma "Fr_2 \ \ \A B. Op(B) \ CoPw\<^sup>A\<^sup>B \<^bold>\\<^sup>C" using ClOpdual Cl_fr_def unfolding conn by auto + +text\\noindent{CoP1-I}\ +lemma "Fr_2 \ \ \A B. Cl(A) \ CoP1\<^sup>A\<^sup>B \<^bold>\\<^sup>I" using Int_fr_def OpCldual conn by auto +lemma "Fr_1b \ \ \A B. Op(B) \ CoP1\<^sup>A\<^sup>B \<^bold>\\<^sup>I" by (smt IF2 dEXP_def MONO_def monI conn) +lemma CoP1_I_rec: "Fr_2 \ \ Fr_3 \ \ \A B. Br (\<^bold>\B) \ CoP1\<^sup>A\<^sup>B \<^bold>\\<^sup>I" using IF3 dNOR_def Br_boundary unfolding conn by auto +text\\noindent{CoP1-C}\ +lemma "Fr_2 \ \ \A B. Op(B) \ CoP1\<^sup>A\<^sup>B \<^bold>\\<^sup>C" using Int_fr_def pC2 pF2 unfolding conn by metis +lemma "Fr_2 \ \ \A B. Br(A) \ CoP1\<^sup>A\<^sup>B \<^bold>\\<^sup>C" using Br_fr_def Cl_fr_def pF2 unfolding conn by fastforce + +text\\noindent{CoP2-I}\ +lemma "Fr_2 \ \ \A B. Cl(A) \ CoP2\<^sup>A\<^sup>B \<^bold>\\<^sup>I" using Int_fr_def OpCldual unfolding conn by auto +lemma "\A B. Br (\<^bold>\B) \ CoP2\<^sup>A\<^sup>B \<^bold>\\<^sup>I" by (simp add: pI1 conn) +text\\noindent{CoP2-C}\ +lemma "Fr_2 \ \ \A B. Op(B) \ CoP2\<^sup>A\<^sup>B \<^bold>\\<^sup>C" using Cl_fr_def Int_fr_def pF2 unfolding conn by fastforce +lemma "Fr_6 \ \ \A B. Cl(A) \ CoP2\<^sup>A\<^sup>B \<^bold>\\<^sup>C" by (smt Cl_fr_def MONO_def monC conn) +lemma "Fr_2 \ \ Fr_3 \ \ \A B. Br(A) \ CoP2\<^sup>A\<^sup>B \<^bold>\\<^sup>C" using CoP1_I_rec Disj_IF pA2 pF2 pF3 unfolding conn by smt + +text\\noindent{CoP3-I}\ +lemma "Fr_2 \ \ \A B. Cl(A) \ CoP3\<^sup>A\<^sup>B \<^bold>\\<^sup>I" by (metis Disj_I ICdual' compl_def dual_def eq_ext' meet_def neg_I_def) +text\\noindent{CoP3-C}\ +lemma "Fr_2 \ \ \A B. Op(B) \ CoP3\<^sup>A\<^sup>B \<^bold>\\<^sup>C" by (metis Disj_I ICdual compl_def dual_def eq_ext' meet_def neg_C_def) + +text\\noindent{XCoP-I}\ +lemma "Fr_2 \ \ \A B. Cl(A) \ XCoP\<^sup>A\<^sup>B \<^bold>\\<^sup>I" using Fr_2_def pA1 pA2 pF1 unfolding conn by metis +lemma "\A B. Br(\<^bold>\B) \ XCoP\<^sup>A\<^sup>B \<^bold>\\<^sup>I" using IB_rel Int_br_def diff_def eq_ext' conn by fastforce +text\\noindent{XCoP-C}\ +lemma "Fr_2 \ \ \A B. Op(B) \ XCoP\<^sup>A\<^sup>B \<^bold>\\<^sup>C" by (metis ClOpdual compl_def diff_def meet_def neg_C_def pA2) +lemma "Fr_2 \ \ \A B. \A B. Br(A) \ XCoP\<^sup>A\<^sup>B \<^bold>\\<^sup>C" using Cl_fr_def compl_def join_def neg_C_def pF3 by fastforce + + +subsection \Double negation introduction/elimination\ + +text\\noindent{DNI-I}\ +lemma "Fr_1b \ \ \A. Op(A) \ DNI\<^sup>A \<^bold>\\<^sup>I" using MONO_def monI pA1 unfolding conn by smt +lemma "Fr_2 \ \ Fr_3 \ \ \A. Br (\<^bold>\A) \ DNI\<^sup>A \<^bold>\\<^sup>I" using CoP1_I_rec by simp +text\\noindent{DNI-C}\ +lemma "Fr_2 \ \ \A. Op(A) \ DNI\<^sup>A \<^bold>\\<^sup>C" using Cl_fr_def Int_fr_def pF2 unfolding conn by fastforce + +text\\noindent{DNE-I}\ +lemma "Fr_2 \ \ \A. Cl(A) \ DNE\<^sup>A \<^bold>\\<^sup>I" by (simp add: Cl_fr_def Fr_2_def Int_fr_def conn) +text\\noindent{DNE-C}\ +lemma "Fr_6 \ \ \A. Cl(A) \ DNE\<^sup>A \<^bold>\\<^sup>C" by (smt MONO_def monC pC2 conn) +lemma "Fr_2 \ \ Fr_3 \ \ \A. Br(A) \ DNE\<^sup>A \<^bold>\\<^sup>C" using CoP1_I_rec Disj_IF pA2 pF2 pF3 unfolding conn by smt + + +subsection \De Morgan laws\ + +text\\noindent{DM1-I}\ +lemma "Fr_1b \ \ \A B. DM1\<^sup>A\<^sup>B \<^bold>\\<^sup>I" by (smt MONO_def monI conn) +lemma "Fr_2 \ \ \A B. Cl(A) \ Cl(B) \ DM1\<^sup>A\<^sup>B \<^bold>\\<^sup>I" using pF2 pI2 conn by fastforce +text\\noindent{DM1-C}\ +lemma "Fr_6 \ \ \A B. DM1\<^sup>A\<^sup>B \<^bold>\\<^sup>C" by (smt MONO_def monC conn) +lemma "Fr_2 \ \ \A B. Br(A) \ Br(B) \ DM1\<^sup>A\<^sup>B \<^bold>\\<^sup>C" using CF2 EXP_def pF2 pF3 unfolding conn by metis + +text\\noindent{DM2-I}\ +lemma "Fr_1b \ \ \A B. DM2\<^sup>A\<^sup>B \<^bold>\\<^sup>I" by (smt MONO_def monI conn) +lemma "\A B. Br(\<^bold>\A) \ Br(\<^bold>\B) \ DM2\<^sup>A\<^sup>B \<^bold>\\<^sup>I" using Int_fr_def pB1 conn by auto +text\\noindent{DM2-C}\ +lemma "Fr_6 \ \ \A B. DM2\<^sup>A\<^sup>B \<^bold>\\<^sup>C" by (smt MONO_def monC conn) +lemma "Fr_2 \ \ \A B. Op(A) \ Op(B) \ DM2\<^sup>A\<^sup>B \<^bold>\\<^sup>C" using CF2 ClOpdual EXP_def unfolding conn by auto + +text\\noindent{DM3-I}\ +lemma "Fr_2 \ \ \A B. Cl(A) \ Cl(B) \ DM3\<^sup>A\<^sup>B \<^bold>\\<^sup>I" using Int_fr_def pF2 unfolding conn by fastforce +text\\noindent{DM3-C}\ +lemma "Fr_1a \ \ Fr_2 \ \ \A B. DM3\<^sup>A\<^sup>B \<^bold>\\<^sup>C" using Cl_fr_def Fr_1a_def pF2 unfolding conn by metis +lemma "Fr_2 \ \ \A B. Br(A) \ Br(B) \ DM3\<^sup>A\<^sup>B \<^bold>\\<^sup>C" using Cl_fr_def pF3 unfolding conn by fastforce + +text\\noindent{DM4-I}\ +lemma "Fr_1a \ \ Fr_2 \ \ \A B. DM4\<^sup>A\<^sup>B \<^bold>\\<^sup>I" using ADDI_a_def Br_fr_def CF1a Int_fr_def pC1 unfolding conn by (metis (full_types)) +lemma "\A B. Br(\<^bold>\A) \ Br(\<^bold>\B) \ DM4\<^sup>A\<^sup>B \<^bold>\\<^sup>I" using Int_fr_def pB1 conn by auto +text\\noindent{DM4-C}\ +lemma "Fr_2 \ \ \A B. Op(A) \ Op(B) \ DM4\<^sup>A\<^sup>B \<^bold>\\<^sup>C" using Cl_fr_def Int_fr_def pF2 unfolding conn by (metis (full_types)) +lemma "Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ \A B. Fr(A) \ Fr(B) \ DM4\<^sup>A\<^sup>B \<^bold>\\<^sup>C" using Cl_fr_def Fr_join_closed Fr_2_def compl_def join_def neg_C_def by auto + + +subsection \Local contraposition axioms\ + +text\\noindent{lCoPw-I}\ +lemma "Fr_2 \ \ \A B. Cl(A) \ lCoPw\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>I" using Int_fr_def OpCldual unfolding conn by auto +lemma "\A B. Br(\<^bold>\B) \ lCoPw\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>I" by (simp add: pI1 conn) +text\\noindent{lCoPw-C}\ +lemma "Fr_2 \ \ \A B. Op(B) \ lCoPw\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>C" using Cl_fr_def Int_fr_def pF2 unfolding conn by fastforce +lemma "Fr_2 \ \ \A B. Br(A) \ lCoPw\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>C" by (simp add: pC1 conn) + +text\\noindent{lCoP1-I}\ +lemma "Fr_2 \ \ \A B. Cl(A) \ lCoP1\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>I" using Int_fr_def OpCldual unfolding conn by auto +text\\noindent{lCoP1-C}\ +lemma "Fr_2 \ \ \A B. Op(B) \ lCoP1\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>C" using Cl_fr_def Int_fr_def pF2 unfolding conn by fastforce +lemma "Fr_2 \ \ \A B. Br(A) \ lCoP1\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>C" by (simp add: pC1 conn) + +text\\noindent{lCoP2-I}\ +lemma "Fr_2 \ \ \A B. Cl(A) \ lCoP2\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>I" using Int_fr_def OpCldual unfolding conn by auto +lemma "\A B. Br(\<^bold>\B) \ lCoP2\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>I" by (simp add: pI1 conn) +text\\noindent{lCoP2-C}\ +lemma "Fr_2 \ \ \A B. Op(B) \ lCoP2\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>C" using Cl_fr_def Int_fr_def pF2 unfolding conn by fastforce + +text\\noindent{lCoP3-I}\ +lemma "Fr_2 \ \ \A B. Cl(A) \ lCoP3\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>I" using Int_fr_def OpCldual unfolding conn by auto +text\\noindent{lCoP3-C}\ +lemma "Fr_2 \ \ \A B. Op(B) \ lCoP3\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>C" using Cl_fr_def Int_fr_def pF2 unfolding conn by fastforce + + +subsection \Disjunctive syllogism\ + +text\\noindent{DS1-I}\ +lemma "\A B. DS1\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>I" by (simp add: Int_fr_def conn) +text\\noindent{DS1-C}\ +lemma "Fr_2 \ \ \A B. Op(A) \ DS1\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>C" using Cl_fr_def Int_fr_def pF2 unfolding conn by fastforce + +text\\noindent{DS2-I}\ +lemma "Fr_2 \ \ \A B. Cl(A) \ DS2\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>I" using OpCldual unfolding conn by auto +text\\noindent{DS2-C}\ +lemma "\A B. DS2\<^sup>A\<^sup>B(\<^bold>\) \<^bold>\\<^sup>C" using Cl_fr_def unfolding conn by auto + +end diff --git a/thys/Topological_Semantics/topo_operators_basic.thy b/thys/Topological_Semantics/topo_operators_basic.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/topo_operators_basic.thy @@ -0,0 +1,416 @@ +theory topo_operators_basic + imports sse_operation_positive_quantification +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +abbreviation implies_rl::"bool\bool\bool" (infixl "\" 25) where "\ \ \ \ \ \ \" (*for readability*) + +section \Topological operators\ + +text\\noindent{Below we define some conditions on algebraic operations (aka. operators) with type @{text "\\\"}. +Those operations are aimed at extending a Boolean 'algebra of propositions' towards different +generalizations of topological algebras. +We divide this section into two parts. In the first we define and interrelate the topological operators of +interior, closure, border and frontier. In the second we introduce the (more fundamental) notion of +derivative (aka. derived set) and its related notion of (Cantorian) coherence, defining both as operators. +We follow the naming conventions introduced originally by Kuratowski @{cite Kuratowski1} +(cf. also @{cite Kuratowski2}) and Zarycki @{cite Zarycki1}.}\ + +subsection \Interior and closure\ +text\\noindent{In this section we examine the traditional notion of topological (closure, resp. interior) algebras +in the spirit of McKinsey \& Tarski @{cite AOT}, but drawing primarily from the works of Zarycki +@{cite Zarycki1} and Kuratowski @{cite Kuratowski1}. +We also explore the less-known notions of border (cf. 'Rand' @{cite Hausdorff}, 'bord' @{cite Zarycki1}) and +frontier (aka. 'boundary'; cf. 'Grenze' @{cite Hausdorff}, 'fronti\`ere' @{cite Zarycki1} @{cite Kuratowski2}) +as studied by Zarycki @{cite Zarycki1} and define corresponding operations for them.}\ + +subsubsection \Interior conditions\ + +abbreviation "Int_1 \ \ MULT \" +abbreviation "Int_1a \ \ MULT_a \" +abbreviation "Int_1b \ \ MULT_b \" +abbreviation "Int_2 \ \ dEXP \" +abbreviation "Int_3 \ \ dNOR \" +abbreviation "Int_4 \ \ IDEM \" +abbreviation "Int_4' \ \ IDEMa \" + +abbreviation "Int_5 \ \ NOR \" +definition "Int_6 \ \ \A B. \(A \<^bold>\ B) \<^bold>\ \(A) \<^bold>\ \(B)" +definition "Int_7 \ \ \A B. \(A \<^bold>\ B) \<^bold>\ \(A) \<^bold>\ \(B)" +definition "Int_8 \ \ \A B. \(\ A \<^bold>\ \ B) \<^bold>\ (\ A) \<^bold>\ (\ B)" +definition "Int_9 \ \ \A B. \ A \<^bold>\ B \ \ A \<^bold>\ \ B" + +text\\noindent{@{text "\"} is an interior operator (@{text "\(\)"}) iff it satisfies conditions 1-4 (cf. @{cite Zarycki1} +and also @{cite Kuratowski2}). This characterization is shown consistent by generating a non-trivial model.}\ +abbreviation "\ \ \ Int_1 \ \ Int_2 \ \ Int_3 \ \ Int_4 \" +lemma "\ \" nitpick[satisfy, card w=3] oops (*model found: characterization is consistent*) + +text\\noindent{We verify some properties which will become useful later (also to improve provers' performance).}\ +lemma PI1: "Int_1 \ = (Int_1a \ \ Int_1b \)" by (metis MULT_def MULT_a_def MULT_b_def) +lemma PI4: "Int_2 \ \ (Int_4 \ = Int_4' \)" unfolding dEXP_def IDEM_def IDEMa_def by blast +lemma PI5: "Int_2 \ \ Int_5 \" unfolding dEXP_def NOR_def conn by blast +lemma PI6: "Int_1a \ \ Int_2 \ \ Int_6 \" by (smt dEXP_def Int_6_def MONO_MULTa MONO_def conn) +lemma PI7: "Int_1 \ \ Int_7 \" proof - + assume int1: "Int_1 \" + { fix a b + have "a \<^bold>\ b = a \<^bold>\ (a \<^bold>\ b)" unfolding conn by blast + hence "\(a \<^bold>\ b) = \(a \<^bold>\ (a \<^bold>\ b))" by simp + moreover from int1 have "\(a \<^bold>\ b) \<^bold>\ \ a \<^bold>\ \ b" by (simp add: MULT_def) + moreover from int1 have "\(a \<^bold>\ (a \<^bold>\ b)) \<^bold>\ \ a \<^bold>\ \ (a \<^bold>\ b)" by (simp add: MULT_def) + ultimately have "\ a \<^bold>\ \ (a \<^bold>\ b) \<^bold>\ \ a \<^bold>\ \ b" by simp + hence "\ a \<^bold>\ \ (a \<^bold>\ b) \<^bold>\ \ a \<^bold>\ (\ a \<^bold>\ \ b)" unfolding conn by blast + hence "\(a \<^bold>\ b) \<^bold>\ \ a \<^bold>\ \ b" unfolding conn by blast + } thus ?thesis by (simp add: Int_7_def) +qed +lemma PI8: "Int_1a \ \ Int_2 \ \ Int_4 \ \ Int_8 \" using ADDI_b_def IDEM_def Int_8_def MONO_ADDIb MONO_MULTa dEXP_def join_def by auto +lemma PI9: "Int_1a \ \ Int_4 \ \ Int_9 \" using IDEM_def Int_9_def MONO_def MONO_MULTa by simp + + +subsubsection \Closure conditions\ + +abbreviation "Cl_1 \ \ ADDI \" +abbreviation "Cl_1a \ \ ADDI_a \" +abbreviation "Cl_1b \ \ ADDI_b \" +abbreviation "Cl_2 \ \ EXP \" +abbreviation "Cl_3 \ \ NOR \" +abbreviation "Cl_4 \ \ IDEM \" +abbreviation "Cl_4' \ \ IDEMb \" + +abbreviation "Cl_5 \ \ dNOR \" +definition "Cl_6 \ \ \A B. (\ A) \<^bold>\ (\ B) \<^bold>\ \ (A \<^bold>\ B)" +definition "Cl_7 \ \ \A B. (\ A) \<^bold>\ (\ B) \<^bold>\ \ (A \<^bold>\ B)" +definition "Cl_8 \ \ \A B. \(\ A \<^bold>\ \ B) \<^bold>\ (\ A) \<^bold>\ (\ B)" +definition "Cl_9 \ \ \A B. A \<^bold>\ \ B \ \ A \<^bold>\ \ B" + +text\\noindent{@{text "\"} is a closure operator (@{text "\(\)"}) iff it satisfies conditions 1-4 (cf. @{cite Kuratowski1} +@{cite Kuratowski2}). This characterization is shown consistent by generating a non-trivial model.}\ +abbreviation "\ \ \ Cl_1 \ \ Cl_2 \ \ Cl_3 \ \ Cl_4 \" +lemma "\ \" nitpick[satisfy, card w=3] oops (*model found: characterization is consistent*) + +text\\noindent{We verify some properties that will become useful later.}\ +lemma PC1: "Cl_1 \ = (Cl_1a \ \ Cl_1b \)" unfolding ADDI_def ADDI_a_def ADDI_b_def by blast +lemma PC4: "Cl_2 \ \ (Cl_4 \ = Cl_4' \)" unfolding EXP_def IDEM_def IDEMb_def by smt +lemma PC5: "Cl_2 \ \ Cl_5 \" unfolding EXP_def dNOR_def conn by simp +lemma PC6: "Cl_1 \ \ Cl_6 \" proof - + assume cl1: "Cl_1 \" + { fix a b + have "a \<^bold>\ b = (a \<^bold>\ b) \<^bold>\ b" unfolding conn by blast + hence "\(a \<^bold>\ b) = \((a \<^bold>\ b) \<^bold>\ b)" by simp + moreover from cl1 have "\(a \<^bold>\ b) \<^bold>\ \ a \<^bold>\ \ b" by (simp add: ADDI_def) + moreover from cl1 have "\((a \<^bold>\ b) \<^bold>\ b) \<^bold>\ \ (a \<^bold>\ b) \<^bold>\ (\ b)" by (simp add: ADDI_def) + ultimately have "\ a \<^bold>\ \ b \<^bold>\ \(a \<^bold>\ b) \<^bold>\ \ b" by simp + hence "(\ a \<^bold>\ \ b) \<^bold>\ \ b \<^bold>\ \(a \<^bold>\ b) \<^bold>\ \ b" unfolding conn by blast + hence "\ a \<^bold>\ \ b \<^bold>\ \ (a \<^bold>\ b)" unfolding conn by blast + } thus ?thesis by (simp add: Cl_6_def) +qed +lemma PC7: "Cl_1b \ \ Cl_2 \ \ Cl_7 \" by (smt EXP_def Cl_7_def MONO_def PC1 MONO_ADDIb conn) +lemma PC8: "Cl_1b \ \ Cl_2 \ \ Cl_4 \ \ Cl_8 \" by (smt Cl_8_def EXP_def IDEM_def MONO_ADDIb MONO_MULTa MULT_a_def meet_def) +lemma PC9: "Cl_1b \ \ Cl_4 \ \ Cl_9 \" by (smt IDEM_def Cl_9_def MONO_def MONO_ADDIb) + + +subsubsection \Exploring dualities\ + +lemma IC1_dual: "Int_1a \ = Cl_1b \" using MONO_ADDIb MONO_MULTa by auto +lemma "Int_1b \ = Cl_1a \" nitpick oops + +lemma IC1a: "Int_1a \ \ Cl_1b \\<^sup>d" by (smt MULT_a_def ADDI_b_def MONO_def MONO_MULTa dual_def conn) +lemma IC1b: "Int_1b \ \ Cl_1a \\<^sup>d" unfolding MULT_b_def ADDI_a_def dual_def conn by auto +lemma IC1: "Int_1 \ \ Cl_1 \\<^sup>d" unfolding MULT_def ADDI_def dual_def conn by simp +lemma IC2: "Int_2 \ \ Cl_2 \\<^sup>d" unfolding dEXP_def EXP_def dual_def conn by blast +lemma IC3: "Int_3 \ \ Cl_3 \\<^sup>d" unfolding dNOR_def NOR_def dual_def conn by simp +lemma IC4: "Int_4 \ \ Cl_4 \\<^sup>d" unfolding IDEM_def IDEM_def dual_def conn by simp +lemma IC4': "Int_4' \ \ Cl_4' \\<^sup>d" unfolding IDEMa_def IDEMb_def dual_def conn by metis +lemma IC5: "Int_5 \ \ Cl_5 \\<^sup>d" unfolding NOR_def dNOR_def dual_def conn by simp + +lemma CI1a: "Cl_1a \ \ Int_1b \\<^sup>d" proof - + assume cl1a: "Cl_1a \" + { fix A B + have "\<^bold>\\(\<^bold>\(A \<^bold>\ B)) \<^bold>\ \<^bold>\\(\<^bold>\A \<^bold>\ \<^bold>\B)" unfolding conn by simp + moreover from cl1a have "\<^bold>\(\(\<^bold>\A) \<^bold>\ \(\<^bold>\B)) \<^bold>\ \<^bold>\\(\<^bold>\A \<^bold>\ \<^bold>\B)" using ADDI_a_def conn by metis + ultimately have "\<^bold>\(\(\<^bold>\A)) \<^bold>\ \<^bold>\(\(\<^bold>\B)) \<^bold>\ \<^bold>\\(\<^bold>\(A \<^bold>\ B))" unfolding conn by simp + hence "(\\<^sup>d A) \<^bold>\ (\\<^sup>d B) \<^bold>\ (\\<^sup>d (A \<^bold>\ B))" unfolding dual_def by simp + } thus "Int_1b \\<^sup>d" using MULT_b_def by blast +qed +lemma CI1b: "Cl_1b \ \ Int_1a \\<^sup>d" by (metis IC1a MONO_ADDIb MONO_MULTa) +lemma CI1: "Cl_1 \ \ Int_1 \\<^sup>d" by (simp add: CI1a CI1b PC1 PI1) +lemma CI2: "Cl_2 \ \ Int_2 \\<^sup>d" unfolding EXP_def dEXP_def dual_def conn by metis +lemma CI3: "Cl_3 \ \ Int_3 \\<^sup>d" unfolding NOR_def dNOR_def dual_def conn by simp +lemma CI4: "Cl_4 \ \ Int_4 \\<^sup>d" unfolding IDEM_def IDEM_def dual_def conn by simp +lemma CI4': "Cl_4' \ \ Int_4' \\<^sup>d" unfolding IDEMa_def IDEMb_def dual_def conn by metis +lemma CI5: "Cl_5 \ \ Int_5 \\<^sup>d" unfolding dNOR_def NOR_def dual_def conn by simp + + +subsection \Frontier and border\ + +subsubsection \Frontier conditions\ + +definition "Fr_1a \ \ \A B. (A \<^bold>\ B) \<^bold>\ \(A \<^bold>\ B) \<^bold>\ (A \<^bold>\ B) \<^bold>\ (\ A \<^bold>\ \ B)" +definition "Fr_1b \ \ \A B. (A \<^bold>\ B) \<^bold>\ \(A \<^bold>\ B) \<^bold>\ (A \<^bold>\ B) \<^bold>\ (\ A \<^bold>\ \ B)" +definition "Fr_1 \ \ \A B. (A \<^bold>\ B) \<^bold>\ \(A \<^bold>\ B) \<^bold>\ (A \<^bold>\ B) \<^bold>\ (\ A \<^bold>\ \ B)" +definition "Fr_2 \ \ \A. \ A \<^bold>\ \(\<^bold>\A)" +abbreviation "Fr_3 \ \ NOR \" +definition "Fr_4 \ \ \A. \(\ A) \<^bold>\ (\ A)" + +definition "Fr_5 \ \ \A. \(\(\ A)) \<^bold>\ \(\ A)" +definition "Fr_6 \ \ \A B. A \<^bold>\ B \ (\ A \<^bold>\ B \<^bold>\ \ B)" + +text\\noindent{@{text "\"} is a topological frontier operator (@{text "\(\)"}) iff it satisfies conditions 1-4 +(cf. @{cite Zarycki1}). This is also shown consistent by generating a non-trivial model.}\ +abbreviation "\ \ \ Fr_1 \ \ Fr_2 \ \ Fr_3 \ \ Fr_4 \" +lemma "\ \" nitpick[satisfy, card w=3] oops (*model found: characterization is consistent*) + +text\\noindent{We now verify some useful properties of the frontier operator.}\ +lemma PF1: "Fr_1 \ = (Fr_1a \ \ Fr_1b \)" unfolding Fr_1_def Fr_1a_def Fr_1b_def by meson +lemma PF5: "Fr_1 \ \ Fr_4 \ \ Fr_5 \" proof - + assume fr1: "Fr_1 \" and fr4: "Fr_4 \" + { fix A + from fr1 have "(\(\ A) \<^bold>\ (\ A)) \<^bold>\ \(\(\ A) \<^bold>\ (\ A)) \<^bold>\ (\(\ A) \<^bold>\ (\ A)) \<^bold>\ (\(\(\ A)) \<^bold>\ \(\ A))" by (simp add: Fr_1_def) + moreover have r1: "\(\ A) \<^bold>\ (\ A) \<^bold>\ \(\ A)" using meet_char Fr_4_def fr4 by simp + moreover have r2: "\(\(\ A)) \<^bold>\ \(\ A) \<^bold>\ \(\ A)" using join_char Fr_4_def fr4 by simp + ultimately have "(\(\ A) \<^bold>\ (\ A)) \<^bold>\ \(\(\ A)) \<^bold>\ (\(\ A) \<^bold>\ (\ A)) \<^bold>\ \(\ A)" unfolding conn by auto + hence "\(\(\ A)) \<^bold>\ \(\ A)" using r1 r2 conn by auto + } thus ?thesis by (simp add: Fr_5_def) +qed +lemma PF6: "Fr_1b \ \ Fr_2 \ \ Fr_6 \" proof - + assume fr1b: "Fr_1b \" and fr2: "Fr_2 \" + { fix A B + have "\(\<^bold>\(A \<^bold>\ B)) \<^bold>\ \(\<^bold>\A \<^bold>\ \<^bold>\B)" unfolding conn by simp + hence aux: "\(\<^bold>\A \<^bold>\ \<^bold>\B) \<^bold>\ \(A \<^bold>\ B)" by (metis (mono_tags) Fr_2_def fr2) + from fr1b have "(\<^bold>\A \<^bold>\ \<^bold>\B) \<^bold>\ \(\<^bold>\A \<^bold>\ \<^bold>\B) \<^bold>\ (\<^bold>\A \<^bold>\ \<^bold>\B) \<^bold>\ (\(\<^bold>\A) \<^bold>\ \(\<^bold>\B))" using Fr_1b_def by metis + hence "A \<^bold>\ B \<^bold>\ \<^bold>\\(\<^bold>\A \<^bold>\ \<^bold>\B) \<^bold>\ A \<^bold>\ B \<^bold>\ (\<^bold>\(\ A) \<^bold>\ \<^bold>\(\ B))" using Fr_2_def fr2 conn by auto + hence "\<^bold>\A \<^bold>\ \<^bold>\B \<^bold>\ \<^bold>\\(\<^bold>\A \<^bold>\ \<^bold>\B) \<^bold>\ \<^bold>\A \<^bold>\ \<^bold>\B \<^bold>\ \<^bold>\(\ A) \<^bold>\ \<^bold>\(\ B)" unfolding conn by blast + hence "A \<^bold>\ B \<^bold>\ \(A \<^bold>\ B) \<^bold>\ A \<^bold>\ B \<^bold>\ (\ A) \<^bold>\ (\ B)" using aux unfolding conn by blast + hence "A \<^bold>\ B \ B \<^bold>\ \(A \<^bold>\ B) \<^bold>\ B \<^bold>\ (\ A) \<^bold>\ (\ B)" unfolding conn by auto + hence "A \<^bold>\ B \ B \<^bold>\ (\ B) \<^bold>\ B \<^bold>\ (\ A) \<^bold>\ (\ B)" using join_char unfolding conn by simp + hence "A \<^bold>\ B \ (\ A) \<^bold>\ B \<^bold>\ (\ B)" unfolding conn by simp + } thus "Fr_6 \" by (simp add: Fr_6_def) +qed + + +subsubsection \Border conditions\ + +definition "Br_1 \ \ \A B. \(A \<^bold>\ B) \<^bold>\ (A \<^bold>\ \ B) \<^bold>\ (B \<^bold>\ \ A)" +definition "Br_2 \ \ (\ \<^bold>\) \<^bold>\ \<^bold>\" +definition "Br_3 \ \ \A. \(\\<^sup>d A) \<^bold>\ A" + +definition "Br_4 \ \ \A B. A \<^bold>\ B \ A \<^bold>\ (\ B) \<^bold>\ \ A" +definition "Br_5a \ \ \A. \(\\<^sup>d A) \<^bold>\ \ A" +definition "Br_5b \ \ \A. \ A \<^bold>\ A" +definition "Br_5c \ \ \A. A \<^bold>\ \\<^sup>d A" +definition "Br_5d \ \ \A. \\<^sup>d A \<^bold>\ \\<^sup>d(\ A)" +abbreviation "Br_6 \ \ IDEM \" +abbreviation "Br_7 \ \ ADDI_a \" +abbreviation "Br_8 \ \ MULT_b \" +definition "Br_9 \ \ \A B. \(A \<^bold>\ B) \<^bold>\ (\ A) \<^bold>\ (\ B)" +definition "Br_10 \ \ \A. \(\<^bold>\(\ A) \<^bold>\ \\<^sup>d A) \<^bold>\ \<^bold>\" + +text\\noindent{@{text "\"} is a topological border operator (@{text "\(\)"}) iff it satisfies conditions 1-3 +(cf. @{cite Zarycki1}). This is also shown consistent.}\ +abbreviation "\ \ \ Br_1 \ \ Br_2 \ \ Br_3 \" +lemma "\ \" nitpick[satisfy, card w=3] oops (*model found: characterization is consistent*) + +text\\noindent{We now verify some useful properties of the border operator.}\ +lemma PB4: "Br_1 \ \ Br_4 \" proof - + assume br1: "Br_1 \" + { fix A B + have aux: "\(A \<^bold>\ B) \<^bold>\ (A \<^bold>\ \ B) \<^bold>\ (B \<^bold>\ \ A)" using br1 Br_1_def by simp + { assume "A \<^bold>\ B" + hence "\(A \<^bold>\ B) \<^bold>\ \ A" using meet_char unfolding conn by simp + hence "\ A \<^bold>\ (A \<^bold>\ \ B) \<^bold>\ (B \<^bold>\ \ A)" using aux by auto + hence "A \<^bold>\ \ B \<^bold>\ \ A" unfolding conn by auto + } hence "A \<^bold>\ B \ A \<^bold>\ \ B \<^bold>\ \ A" by (rule impI) + } thus "Br_4 \" by (simp add: Br_4_def) +qed +lemma PB5b: "Br_1 \ \ Br_5b \" proof - + assume br1: "Br_1 \" + { fix A + from br1 have aux: "\(A \<^bold>\ A) \<^bold>\ (A \<^bold>\ \ A) \<^bold>\ (A \<^bold>\ \ A)" unfolding Br_1_def by blast + hence "\ A \<^bold>\ (A \<^bold>\ \ A)" unfolding conn by metis + hence "\ A \<^bold>\ A" unfolding conn by blast + } thus "Br_5b \" using Br_5b_def by blast +qed +lemma PB5c: "Br_1 \ \ Br_5c \" using Br_5b_def Br_5c_def PB5b dual_def unfolding conn by force +lemma PB5a: "Br_1 \ \ Br_3 \ \ Br_5a \" proof - + assume br1: "Br_1 \" and br3: "Br_3 \" + hence br5c: "Br_5c \" using PB5c by simp + { fix A + have "A \<^bold>\ \(\\<^sup>d A) \<^bold>\ \ A" by (metis br5c Br_4_def Br_5c_def PB4 br1) + hence "\(\\<^sup>d A) \<^bold>\ \ A" using Br_3_def br3 unfolding conn by metis + } thus "Br_5a \" using Br_5a_def by simp +qed +lemma PB5d: "Br_1 \ \ Br_3 \ \ Br_5d \" proof - + assume br1: "Br_1 \" and br3: "Br_3 \" + hence br5a: "Br_5a \" using PB5a by simp + { fix A + from br5a have "\(\\<^sup>d(\<^bold>\A)) \<^bold>\ \(\<^bold>\A)" unfolding Br_5a_def by simp + hence "\<^bold>\\(\<^bold>\A) \<^bold>\ \<^bold>\\(\\<^sup>d(\<^bold>\A))" unfolding conn by blast + hence "\\<^sup>d A \<^bold>\ \\<^sup>d(\ A)" unfolding dual_def conn by simp + } thus "Br_5d \" using Br_5d_def by simp +qed +lemma PB6: "Br_1 \ \ Br_6 \" by (smt Br_4_def Br_5b_def IDEM_def PB4 PB5b conn) +lemma PB7: "Br_1 \ \ Br_7 \" using Br_4_def Br_5b_def ADDI_a_def PB4 PB5b unfolding conn by smt +lemma PB8: "Br_1 \ \ Br_8 \" using Br_1_def Br_5b_def MULT_b_def PB5b unfolding conn by metis +lemma PB9: "Br_1 \ \ Br_9 \" unfolding Br_1_def Br_9_def conn by simp +lemma PB10: "Br_1 \ \ Br_3 \ \ Br_10 \" proof - \\ proof automagically generated \ + assume a1: "Br_3 \" + assume a2: "Br_1 \" + { fix bb :: "w \ bool" and ww :: w + have "\p pa w pb. ((pb p w \ pb pa w) \ \pb (pa \<^bold>\ p) w) \ \Br_9 pb" + by (metis Br_9_def join_def) (* 20 ms *) + then have "(\ (((\\<^sup>c) \<^bold>\ (\\<^sup>d)) bb) ww) \ (\<^bold>\ ww) \ \(\ (((\\<^sup>c) \<^bold>\ (\\<^sup>d)) bb) ww) \ \(\<^bold>\ ww)" + using a2 a1 by (metis (no_types) Br_5a_def Br_5b_def Br_5d_def PB5a PB5b PB5d PB9 bottom_def compl_def dual_def meet_def) (* 86 ms *) + } then show ?thesis unfolding Br_10_def by blast (* 1 ms *) +qed + + +subsubsection \Relation with closure and interior\ + +text\\noindent{We define and verify some conversion operators useful to derive border and frontier operators from +closure/interior operators and also between each other.}\ + +text\\noindent{Frontier operator as derived from interior.}\ +definition Fr_int::"(\\\)\(\\\)" ("\\<^sub>I") where "\\<^sub>I \ \ \A. \<^bold>\(\ A) \<^bold>\ \\<^sup>d A" +lemma FI1: "Int_1 \ \ Int_2 \ \ Fr_1(\\<^sub>I \)" using EXP_def Fr_1_def Fr_int_def IC2 MULT_def conn by auto +lemma FI2: "Fr_2(\\<^sub>I \)" using Fr_2_def Fr_int_def dual_def dual_symm unfolding conn by smt +lemma FI3: "Int_3 \ \ Fr_3(\\<^sub>I \)" using NOR_def Fr_int_def IC3 unfolding conn by auto +lemma FI4: "Int_1a \ \ Int_2 \ \ Int_4 \ \ Fr_4(\\<^sub>I \)" unfolding Fr_int_def Fr_4_def dual_def conn by (smt Int_9_def MONO_MULTa PI9) + +text\\noindent{Frontier operator as derived from closure.}\ +definition Fr_cl::"(\\\)\(\\\)" ("\\<^sub>C") where "\\<^sub>C \ \ \A. (\ A) \<^bold>\ \(\<^bold>\A)" +lemma FC1: "Cl_1 \ \ Cl_2 \ \ Fr_1(\\<^sub>C \)" using CI1 EXP_def Fr_1_def Fr_cl_def MULT_def dual_def unfolding conn by smt +lemma FC2: "Fr_2(\\<^sub>C \)" using Fr_2_def Fr_cl_def dual_def dual_symm unfolding conn by smt +lemma FC3: "Cl_3 \ \ Fr_3(\\<^sub>C \)" unfolding NOR_def Fr_cl_def conn by simp +lemma FC4: "Cl_1b \ \ Cl_2 \ \ Cl_4 \ \ Fr_4(\\<^sub>C \)" using Cl_8_def MONO_ADDIb PC8 unfolding Fr_cl_def Fr_4_def conn by blast + +text\\noindent{Frontier operator as derived from border.}\ +definition Fr_br::"(\\\)\(\\\)" ("\\<^sub>B") where "\\<^sub>B \ \ \A. \ A \<^bold>\ \(\<^bold>\A)" +lemma FB1: "Br_1 \ \ Fr_1(\\<^sub>B \)" unfolding Fr_br_def Fr_1_def using Br_1_def Br_5b_def PB5b conn by smt +lemma FB2: "Fr_2(\\<^sub>B \)" unfolding Fr_br_def Fr_2_def conn by auto +lemma FB3: "Br_1 \ \ Br_2 \ \ Fr_3(\\<^sub>B \)" using Br_2_def Br_5b_def PB5b unfolding Fr_br_def NOR_def conn by force +lemma FB4: "Br_1 \ \ Br_3 \ \ Fr_4(\\<^sub>B \)" proof - + assume br1: "Br_1 \" and br3: "Br_3 \" + { fix A + have "(\\<^sub>B \) ((\\<^sub>B \) A) = \(\ A \<^bold>\ \(\<^bold>\A)) \<^bold>\ \(\<^bold>\(\ A \<^bold>\ \(\<^bold>\A)))" by (simp add: Fr_br_def conn) + also have "... = \(\ A \<^bold>\ \(\<^bold>\A)) \<^bold>\ \(\<^bold>\(\ A) \<^bold>\ \\<^sup>d A)" by (simp add: dual_def conn) + also from br1 br3 have "... = \(\ A \<^bold>\ \(\<^bold>\A)) \<^bold>\ \<^bold>\" using Br_10_def PB10 by metis + finally have "(\\<^sub>B \) ((\\<^sub>B \) A) \<^bold>\ \(\ A \<^bold>\ \(\<^bold>\A))" unfolding conn by simp + hence "(\\<^sub>B \) ((\\<^sub>B \) A) \<^bold>\ (\\<^sub>B \) A" using Br_5b_def Fr_br_def PB5b br1 by fastforce + } thus "Fr_4(\\<^sub>B \)" using Fr_4_def by blast +qed + +text\\noindent{Border operator as derived from interior.}\ +definition Br_int::"(\\\)\(\\\)" ("\\<^sub>I") where "\\<^sub>I \ \ \A. A \<^bold>\ (\ A)" +lemma BI1: "Int_1 \ \ Br_1 (\\<^sub>I \)" using Br_1_def Br_int_def MULT_def conn by auto +lemma BI2: "Int_3 \ \ Br_2 (\\<^sub>I \)" by (simp add: Br_2_def Br_int_def dNOR_def conn) +lemma BI3: "Int_1a \ \ Int_4 \ \ Br_3 (\\<^sub>I \)" unfolding Br_int_def Br_3_def dual_def by (smt Int_9_def MONO_MULTa PI9 conn) + +text\\noindent{Border operator as derived from closure.}\ +definition Br_cl::"(\\\)\(\\\)" ("\\<^sub>C") where "\\<^sub>C \ \ \A. A \<^bold>\ \(\<^bold>\A)" +lemma BC1: "Cl_1 \ \ Br_1(\\<^sub>C \)" using Br_1_def Br_cl_def CI1 MULT_def dual_def unfolding conn by smt +lemma BC2: "Cl_3 \ \ Br_2(\\<^sub>C \)" using Br_2_def Br_cl_def CI3 dNOR_def dual_def unfolding conn by auto +lemma BC3: "Cl_1b \ \ Cl_4 \ \ Br_3 (\\<^sub>C \)" unfolding Br_cl_def Br_3_def dual_def conn by (metis (mono_tags, lifting) Cl_9_def PC9) + +text\\noindent{Note that the previous two conversion functions are related:}\ +lemma BI_BC_rel: "(\\<^sub>I \) = \\<^sub>C(\\<^sup>d)" by (simp add: Br_cl_def Br_int_def dual_def conn) + +text\\noindent{Border operator as derived from frontier.}\ +definition Br_fr::"(\\\)\(\\\)" ("\\<^sub>F") where "\\<^sub>F \ \ \A. A \<^bold>\ (\ A)" +lemma BF1: "Fr_1 \ \ Br_1(\\<^sub>F \)" using Br_1_def Br_fr_def Fr_1_def conn by auto +lemma BF2: "Fr_2 \ \ Fr_3 \ \ Br_2(\\<^sub>F \)" using Br_2_def Br_fr_def Fr_2_def NOR_def unfolding conn by fastforce +lemma BF3: "Fr_1b \ \ Fr_2 \ \ Fr_4 \ \ Br_3(\\<^sub>F \)" proof - + assume fr1b: "Fr_1b \" and fr2: "Fr_2 \" and fr4: "Fr_4 \" + { fix A + from fr1b fr2 have "let M= \<^bold>\A \<^bold>\ \ A ; N= \ A in M \<^bold>\ N \ (\ M \<^bold>\ N \<^bold>\ \ N)" using PF1 PF6 by (simp add: Fr_6_def) + hence "\(\<^bold>\A \<^bold>\ \ A) \<^bold>\ \ A \<^bold>\ \(\ A)" unfolding conn by meson + hence "\(\<^bold>\A \<^bold>\ \ A) \<^bold>\ \ A" using Fr_4_def fr4 unfolding conn by metis + hence aux: "\(\<^bold>\A \<^bold>\ \ A) \<^bold>\ \<^bold>\(\ A) \<^bold>\ \<^bold>\" unfolding conn by blast + have "(\\<^sub>F \)((\\<^sub>F \)\<^sup>d A) = \<^bold>\(\<^bold>\A \<^bold>\ \(\<^bold>\A)) \<^bold>\ \(\<^bold>\(\<^bold>\A \<^bold>\ \(\<^bold>\A)))" unfolding Br_fr_def dual_def by simp + also have "... = (A \<^bold>\ \<^bold>\\ A) \<^bold>\ \(\<^bold>\A \<^bold>\ \ A)" using Fr_2_def fr2 unfolding conn by force + also have "... = (A \<^bold>\ \(\<^bold>\A \<^bold>\ \ A)) \<^bold>\ (\<^bold>\\ A \<^bold>\ \(\<^bold>\A \<^bold>\ \ A))" unfolding conn by auto + also have "... = (A \<^bold>\ \(\<^bold>\A \<^bold>\ \ A))" using aux unfolding conn by blast + finally have "(\\<^sub>F \)((\\<^sub>F \)\<^sup>d A) = A \<^bold>\ \(\<^bold>\A \<^bold>\ \ A)" unfolding Br_fr_def dual_def conn by simp + } thus "Br_3(\\<^sub>F \)" unfolding Br_3_def Br_fr_def conn by meson +qed + +text\\noindent{Interior operator as derived from border.}\ +definition Int_br::"(\\\)\(\\\)" ("\\<^sub>B") where "\\<^sub>B \ \ \A. A \<^bold>\ (\ A)" +lemma IB1: "Br_1 \ \ Int_1(\\<^sub>B \)" using Br_1_def MULT_def Int_br_def conn by auto +lemma IB2: "Int_2(\\<^sub>B \)" by (simp add: dEXP_def Int_br_def conn) +lemma IB3: "Br_2 \ \ Int_3(\\<^sub>B \)" by (simp add: Br_2_def dNOR_def Int_br_def conn) +lemma IB4: "Br_1 \ \ Br_3 \ \ Int_4(\\<^sub>B \)" unfolding Int_br_def IDEM_def conn + using Br_1_def Br_5c_def Br_5d_def PB5c PB5d dual_def unfolding conn by (metis (full_types)) + +text\\noindent{Interior operator as derived from frontier.}\ +definition Int_fr::"(\\\)\(\\\)" ("\\<^sub>F") where "\\<^sub>F \ \ \A. A \<^bold>\ (\ A)" +lemma IF1a: "Fr_1b \ \ Int_1a(\\<^sub>F \)" using Fr_1b_def MULT_a_def Int_fr_def conn by auto +lemma IF1b: "Fr_1a \ \ Int_1b(\\<^sub>F \)" using Fr_1a_def MULT_b_def Int_fr_def conn by auto +lemma IF1: "Fr_1 \ \ Int_1(\\<^sub>F \)" by (simp add: IF1a IF1b PF1 PI1) +lemma IF2: "Int_2(\\<^sub>F \)" by (simp add: dEXP_def Int_fr_def conn) +lemma IF3: "Fr_2 \ \ Fr_3 \ \ Int_3(\\<^sub>F \)" using BF2 Br_2_def Br_fr_def dNOR_def Int_fr_def unfolding conn by auto +lemma IF4: "Fr_1a \ \ Fr_2 \ \ Fr_4 \ \ Int_4(\\<^sub>F \)" + using Fr_1a_def Fr_2_def Fr_4_def unfolding Int_fr_def IDEM_def conn by metis + +text\\noindent{Closure operator as derived from border.}\ +definition Cl_br::"(\\\)\(\\\)" ("\\<^sub>B") where "\\<^sub>B \ \ \A. A \<^bold>\ \(\<^bold>\A)" +lemma CB1: "Br_1 \ \ Cl_1(\\<^sub>B \)" proof - + assume br1: "Br_1 \" + { fix A B + have "(\\<^sub>B \) (A \<^bold>\ B) = A \<^bold>\ B \<^bold>\ \(\<^bold>\(A \<^bold>\ B))" by (simp add: Cl_br_def conn) + also have "... = A \<^bold>\ B \<^bold>\ \(\<^bold>\A \<^bold>\ \<^bold>\B)" unfolding conn by simp + also have "... = A \<^bold>\ B \<^bold>\ (\<^bold>\A \<^bold>\ \(\<^bold>\B)) \<^bold>\ (\<^bold>\B \<^bold>\ \(\<^bold>\A))" using Br_1_def br1 unfolding conn by auto + also have "... = A \<^bold>\ \(\<^bold>\A) \<^bold>\ B \<^bold>\ \(\<^bold>\B)" unfolding conn by auto + also have "... = (\\<^sub>B \) A \<^bold>\ (\\<^sub>B \) B" by (simp add: Cl_br_def conn) + finally have "(\\<^sub>B \)(A \<^bold>\ B) = (\\<^sub>B \) A \<^bold>\ (\\<^sub>B \) B" unfolding Cl_br_def by blast + } thus "Cl_1(\\<^sub>B \)" unfolding ADDI_def Cl_br_def by simp +qed +lemma CB2: "Cl_2(\\<^sub>B \)" by (simp add: EXP_def Cl_br_def conn) +lemma CB3: "Br_2 \ \ Cl_3(\\<^sub>B \)" using Br_2_def Cl_br_def IC3 dNOR_def dual_def dual_symm unfolding conn by smt +lemma CB4: "Br_1 \ \ Br_3 \ \ Cl_4(\\<^sub>B \)" proof - + assume br1: "Br_1 \" and br3: "Br_3 \" + { fix A + have "(\\<^sub>B \) ((\\<^sub>B \) A) = A \<^bold>\ \(\<^bold>\A) \<^bold>\ \(\<^bold>\(A \<^bold>\ \(\<^bold>\A)))" by (simp add: Cl_br_def conn) + also have "... = A \<^bold>\ \(\<^bold>\A) \<^bold>\ \(\<^bold>\A \<^bold>\ \\<^sup>d A)" unfolding dual_def conn by simp + also have "... = A \<^bold>\ \(\<^bold>\A) \<^bold>\ (\<^bold>\A \<^bold>\ \(\\<^sup>d A)) \<^bold>\ (\<^bold>\A \<^bold>\ \(\<^bold>\A))" unfolding dual_def using Br_1_def br1 conn by auto + also have "... = A \<^bold>\ \(\<^bold>\A)" using Br_3_def br3 unfolding conn by metis + finally have "(\\<^sub>B \) ((\\<^sub>B \) A) = (\\<^sub>B \) A" unfolding Cl_br_def by blast + } thus "Cl_4(\\<^sub>B \)" unfolding IDEM_def Cl_br_def by simp +qed + +text\\noindent{Closure operator as derived from frontier.}\ +definition Cl_fr::"(\\\)\(\\\)" ("\\<^sub>F") where "\\<^sub>F \ \ \A. A \<^bold>\ (\ A)" +lemma CF1b: "Fr_1b \ \ Fr_2 \ \ Cl_1b(\\<^sub>F \)" using Cl_fr_def Fr_6_def MONO_def MONO_ADDIb PF6 unfolding conn by auto +lemma CF1a: "Fr_1a \ \ Fr_2 \ \ Cl_1a(\\<^sub>F \)" proof - + have aux: "Fr_2 \ \ (\\<^sub>F \)\<^sup>d = (\\<^sub>F \)" by (simp add: Cl_fr_def Fr_2_def Int_fr_def dual_def conn) + hence "Fr_1a \ \ Fr_2 \ \ Cl_1a(\\<^sub>F \)\<^sup>d" using IC1b IF1b by blast + thus "Fr_1a \ \ Fr_2 \ \ Cl_1a(\\<^sub>F \)" using ADDI_a_def aux unfolding conn by simp +qed +lemma CF1: "Fr_1 \ \ Fr_2 \ \ Cl_1(\\<^sub>F \)" by (simp add: CF1a CF1b PC1 PF1) +lemma CF2: "Cl_2(\\<^sub>F \)" by (simp add: EXP_def Cl_fr_def conn) +lemma CF3: "Fr_3 \ \ Cl_3(\\<^sub>F \)" by (simp add: Cl_fr_def NOR_def conn) +lemma CF4: "Fr_1a \ \ Fr_2 \ \ Fr_4 \ \ Cl_4(\\<^sub>F \)" proof - + have aux: "Fr_2 \ \ (\\<^sub>F \)\<^sup>d = (\\<^sub>F \)" by (simp add: Cl_fr_def Fr_2_def Int_fr_def dual_def conn) + hence "Fr_1a \ \ Fr_2 \ \ Fr_4 \ \ Cl_4(\\<^sub>F \)\<^sup>d" using IC4 IF4 by blast + thus "Fr_1a \ \ Fr_2 \ \ Fr_4 \ \ Cl_4(\\<^sub>F \)" by (simp add: aux) +qed + + +subsubsection \Infinitary conditions\ + +text\\noindent{We define the essential infinitary conditions for the closure and interior operators (entailing infinite +additivity and multiplicativity resp.). Observe that the other direction is implied by monotonicity (MONO).}\ +abbreviation "Cl_inf \ \ iADDI_a(\)" +abbreviation "Int_inf \ \ iMULT_b(\)" + +text\\noindent{There exists indeed a condition on frontier operators responsible for the infinitary conditions above:}\ +definition "Fr_inf \ \ \S. \<^bold>\S \<^bold>\ \(\<^bold>\S) \<^bold>\ \<^bold>\S \<^bold>\ \<^bold>\Ra[\|S]" + +lemma CF_inf: "Fr_2 \ \ Fr_inf \ \ Cl_inf(\\<^sub>F \)" unfolding iADDI_a_def Fr_inf_def + by (smt Cl_fr_def Fr_2_def Ra_restr_ex compl_def dom_compl_def2 iDM_b join_def meet_def supremum_def) +lemma IF_inf: "Fr_inf \ \ Int_inf(\\<^sub>F \)" unfolding Fr_inf_def iMULT_b_def Int_fr_def Ra_restr_all + by (metis (mono_tags, hide_lams) diff_def infimum_def meet_def pfunRange_restr_def supremum_def) + +text\\noindent{This condition is indeed strong enough to entail closure of the fixed-point predicates under infimum/supremum.}\ +lemma fp_IF_inf_closed: "Fr_inf \ \ infimum_closed (fp (\\<^sub>F \))" by (metis (full_types) IF2 IF_inf Ra_restr_all dEXP_def iMULT_b_def infimum_def) +lemma fp_CF_sup_closed: "Fr_inf \ \ Fr_2 \ \ supremum_closed (fp (\\<^sub>F \))" by (metis (full_types) CF2 CF_inf EXP_def Ra_restr_ex iADDI_a_def supremum_def) + +end diff --git a/thys/Topological_Semantics/topo_operators_derivative.thy b/thys/Topological_Semantics/topo_operators_derivative.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/topo_operators_derivative.thy @@ -0,0 +1,207 @@ +theory topo_operators_derivative + imports topo_operators_basic +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + + +subsection \Derivative and coherence\ + +text\\noindent{In this section we investigate two related operators, namely the `derivative' (or `derived set') +and the (Cantorian) `coherence' of a set. The derivative of a set is the set of its accumulation (aka. limit) +points. The coherence of a set A is the set formed by those limit points of A belonging to A. +For the derivative operator we draw upon the works by Kuratowski @{cite Kuratowski1} and +(in more detail) by Zarycki @{cite Zarycki3}; cf.~also McKinsey \& Tarski @{cite AOT}. +For the (Cantorian) coherence operator we follow the treatment given by Zarycki in @{cite Zarycki2}.}\ + +subsubsection \Derivative conditions\ + +text\\noindent{The derivative conditions overlap partly with Kuratowski closure conditions @{cite Kuratowski1}. +We try to make both notations coincide when possible.}\ + +abbreviation "Der_1 \ \ Cl_1 \" +abbreviation "Der_1a \ \ Cl_1a \" +abbreviation "Der_1b \ \ Cl_1b \" +abbreviation "Der_2 \ \ Cl_5 \" \\ follows from Cl-2 \ +abbreviation "Der_3 \ \ Cl_3 \" +abbreviation "Der_4 \ \ Cl_4' \" +definition "Der_4e \ \ \A. \(\ A) \<^bold>\ (\ A \<^bold>\ A)" +definition "Der_5 \ \ \A. (\ A \<^bold>\ A) \ (A \<^bold>\ \\<^sup>d A) \ (A \<^bold>\ \<^bold>\ \ A \<^bold>\ \<^bold>\)" + +text\\noindent{Some remarks: +Condition Der-2 basically says (when assuming other derivative axioms) that the space is dense-in-itself, +i.e. that all points are accumulation points (no point is isolated) w.r.t the whole space. +Der-4 is a weakened (left-to-right) variant of Cl-4. +Condition Der-4e corresponds to a (weaker) condition than Der-4 and is used in more recent literature +(in particular in the works of Leo Esakia @{cite Esakia}). +When other derivative axioms are assumed, Der-5 above as used by Zarycki @{cite Zarycki3} says that +the only clopen sets in the space are the top and bottom elements (empty set and universe, resp.). +We verify some properties:}\ + +lemma Der4e_rel: "Der_4 \ \ Der_4e \" by (simp add: IDEMb_def Der_4e_def conn) +lemma PD1: "Der_1b \ \ \A B. A \<^bold>\ B \ \ A \<^bold>\ \ B" using MONO_def MONO_ADDIb by auto +lemma PD2: "Der_1b \ \ \A B. A \<^bold>\ B \ \\<^sup>d A \<^bold>\ \\<^sup>d B" using CI1b MONO_def MONO_MULTa dual_def by fastforce +lemma PD3: "Der_1b \ \ \A B. \(A \<^bold>\ B) \<^bold>\ \ A \<^bold>\ \ B" unfolding conn by (metis (no_types, lifting) PD1) +lemma PD4: "Der_1 \ \ \A B. (\ A \<^bold>\ \ B) \<^bold>\ \(A \<^bold>\ B)" using Cl_6_def PC6 by metis +lemma PD5: "Der_4 \ \ \A. \(\(\<^bold>\(\ A))) \<^bold>\ \(\<^bold>\(\ A))" unfolding IDEMb_def by blast +text\\noindent{Observe that the lemmas below require Der-2 as premise:}\ +lemma PD6: "Der_1 \ \ Der_2 \ \ \A. \\<^sup>d A \<^bold>\ \ A" unfolding ADDI_def dNOR_def dual_def conn by fastforce +lemma PD7: "Der_1 \ \ Der_2 \ \ \A. \(\\<^sup>d A) \<^bold>\ \(\ A)" by (metis (mono_tags, lifting) PC1 PD1 PD6) +lemma PD8: "Der_1 \ \ Der_2 \ \ Der_4 \ \ \A. \(\\<^sup>d A) \<^bold>\ \ A" by (meson IDEMb_def PD7) +lemma PD9: "Der_1 \ \ Der_2 \ \ Der_4 \ \ \A. \\<^sup>d A \<^bold>\ \\<^sup>d(\ A)" by (metis CI4' IDEMa_def PC1 PD2 PD6) +lemma PD10: "Der_1 \ \ Der_2 \ \ Der_4 \ \ \A. \\<^sup>d A \<^bold>\ \(\\<^sup>d A)" using CI4' IDEMa_def PD6 by metis +lemma PD11: "Der_1 \ \ Der_2 \ \ Der_4 \ \ \A. \<^bold>\(\ A) \<^bold>\ \(\<^bold>\(\ A))" using IDEMb_def PD6 dual_def unfolding conn by metis +lemma PD12: "Der_1 \ \ Der_2 \ \ Der_4 \ \ \A. (\\<^sup>d A) \<^bold>\ (\ A) \<^bold>\ \\<^sup>d(A \<^bold>\ (\ A))" proof - + assume der1: "Der_1 \" and der2: "Der_2 \" and der4: "Der_4 \" + { fix A + from der1 have "let M=\<^bold>\A ; N=\<^bold>\(\ A) in \(M \<^bold>\ N) \<^bold>\ (\ M) \<^bold>\ (\ N)" unfolding ADDI_def by simp + hence aux: "\<^bold>\(\(\<^bold>\A) \<^bold>\ \(\<^bold>\(\ A))) \<^bold>\ \<^bold>\(\ (\<^bold>\A \<^bold>\ \<^bold>\(\ A)))" unfolding dual_def conn by simp + have "(\\<^sup>d A \<^bold>\ \ A) = (\\<^sup>d A \<^bold>\ \\<^sup>d(\ A))" using PD6 PD9 der1 der2 der4 unfolding conn by metis + also have "... = \<^bold>\(\(\<^bold>\A) \<^bold>\ \(\<^bold>\(\ A)))" unfolding dual_def conn by simp + also from aux have "... = \<^bold>\(\ (\<^bold>\A \<^bold>\ \<^bold>\(\ A)))" unfolding dual_def by blast + also have "... = \\<^sup>d(A \<^bold>\ (\ A))" unfolding dual_def conn by simp + finally have "(\\<^sup>d A) \<^bold>\ (\ A) \<^bold>\ \\<^sup>d(A \<^bold>\ (\ A))" by simp + } thus ?thesis by simp +qed + +text\\noindent{The conditions below can serve to axiomatize a derivative operator. Different authors consider different +sets of conditions. We define below some corresponding to Zarycki @{cite Zarycki3}, Kuratowski @{cite Kuratowski1} +@{cite Zarycki2}, McKinsey \& Tarski @{cite AOT}, and Esakia @{cite Esakia}, respectively.}\ +abbreviation "\
z \ \ Der_1 \ \ Der_2 \ \ Der_3 \ \ Der_4 \ \ Der_5 \" +abbreviation "\
k \ \ Der_1 \ \ Der_2 \ \ Der_3 \ \ Der_4 \" +abbreviation "\
mt \ \ Der_1 \ \ Der_3 \ \ Der_4 \" +abbreviation "\
e \ \ Der_1 \ \ Der_3 \ \ Der_4e \" + +text\\noindent{Our `default' derivative operator will coincide with @{text "\
k"} from Kuratowski (also Zarycki). +However, for proving theorems we will employ the weaker variant Der-4e instead of Der-4 whenever possible. +We start by defining a dual operator and verifying some dualities; we then define conversion operators. +Observe that conditions Der-2 and Der-5 are not used in the rest of this subsection. +Der-2 will be required later when working with the coherence operator.}\ +abbreviation "\
\ \ \
k \" +abbreviation "\ \ \ Int_1 \ \ Int_3 \ \ Int_4' \ \ Int_5 \" \\ 'dual-derivative' operator \ + +lemma SD_dual1: "\(\) \ \
(\\<^sup>d)" using IC1 IC4' IC3 IC5 by simp +lemma SD_dual2: "\(\\<^sup>d) \ \
(\)" using IC1 IC4' IC3 IC5 dual_symm by metis +lemma DS_dual1: "\
(\) \ \(\\<^sup>d)" using CI1 CI4' CI3 CI5 by simp +lemma DS_dual2: "\
(\\<^sup>d) \ \(\)" using CI1 CI4' CI3 CI5 dual_symm by metis +lemma DS_dual: "\
(\) = \(\\<^sup>d)" using SD_dual2 DS_dual1 by smt + +text\\noindent{Closure operator as derived from derivative.}\ +definition Cl_der::"(\\\)\(\\\)" ("\\<^sub>D") where "\\<^sub>D \ \ \A. A \<^bold>\ \(A)" +text\\noindent{Verify properties:}\ +lemma CD1a: "Der_1a \ \ Cl_1a (\\<^sub>D \)" unfolding Cl_der_def ADDI_a_def conn by auto +lemma CD1b: "Der_1b \ \ Cl_1b (\\<^sub>D \)" unfolding Cl_der_def ADDI_b_def conn by auto +lemma CD1 : "Der_1 \ \ Cl_1 (\\<^sub>D \)" unfolding Cl_der_def ADDI_def conn by blast +lemma CD2: "Cl_2 (\\<^sub>D \)" unfolding Cl_der_def EXP_def conn by simp +lemma CD3: "Der_3 \ \ Der_3 (\\<^sub>D \)" unfolding Cl_der_def NOR_def conn by simp +lemma CD4a: "Der_1a \ \ Der_4e \ \ Cl_4 (\\<^sub>D \)" unfolding Cl_der_def by (smt ADDI_a_def Der_4e_def IDEM_def join_def) +lemma "Der_1b \ \ Der_4 \ \ Cl_4 (\\<^sub>D \)" nitpick oops (*countermodel*) +lemma CD4: "Der_1 \ \ Der_4e \ \ Cl_4 (\\<^sub>D \)" unfolding Cl_der_def by (metis (no_types, lifting) CD4a Cl_der_def IDEM_def PC1) + +text\\noindent{Interior operator as derived from (dual) derivative.}\ +definition Int_der::"(\\\)\(\\\)" ("\\<^sub>D") where "\\<^sub>D \ \ \A. A \<^bold>\ \\<^sup>d(A)" +text\\noindent{Verify definition:}\ +lemma Int_der_def2: "\\<^sub>D \ = (\\. \ \<^bold>\ \(\<^bold>\\))" unfolding Int_der_def dual_def conn by simp +lemma dual_der1: "\\<^sub>D \ \ (\\<^sub>D \)\<^sup>d" unfolding Cl_der_def Int_der_def dual_def conn by simp +lemma dual_der2: "\\<^sub>D \ \ (\\<^sub>D \)\<^sup>d" unfolding Cl_der_def Int_der_def dual_def conn by simp +text\\noindent{Verify properties:}\ +lemma ID1: "Der_1 \ \ Int_1 (\\<^sub>D \)" using Int_der_def MULT_def ADDI_def CI1 unfolding conn by auto +lemma ID1a: "Der_1a \ \ Int_1b (\\<^sub>D \)" by (simp add: CI1a dual_der2 CD1a) +lemma ID1b: "Der_1b \ \ Int_1a (\\<^sub>D \)" by (simp add: CI1b dual_der2 CD1b) +lemma ID2: "Int_2 (\\<^sub>D \)" unfolding Int_der_def dEXP_def conn by simp +lemma ID3: "Der_3 \ \ Int_3 (\\<^sub>D \)" by (simp add: CI3 CD3 dual_der2) +lemma ID4: "Der_1 \ \ Der_4e \ \ Int_4 (\\<^sub>D \)" using CI4 CD4 dual_der2 by simp +lemma ID4a: "Der_1a \ \ Der_4e \ \ Int_4 (\\<^sub>D \)" by (simp add: CI4 dual_der2 CD4a) +lemma "Der_1b \ \ Der_4 \ \ Int_4 (\\<^sub>D \)" nitpick oops (*countermodel*) + +text\\noindent{Border operator as derived from (dual) derivative.}\ +definition Br_der::"(\\\)\(\\\)" ("\\<^sub>D") where "\\<^sub>D \ \ \A. A \<^bold>\ \\<^sup>d(A)" +text\\noindent{Verify definition:}\ +lemma Br_der_def2: "\\<^sub>D \ = (\A. A \<^bold>\ \(\<^bold>\A))" unfolding Br_der_def dual_def conn by simp +text\\noindent{Verify properties:}\ +lemma BD1: "Der_1 \ \ Br_1 (\\<^sub>D \)" using Br_der_def Br_1_def CI1 MULT_def conn by auto +lemma BD2: "Der_3 \ \ Br_2 (\\<^sub>D \)" using Br_der_def Br_2_def CI3 dNOR_def unfolding conn by auto +lemma BD3: "Der_1b \ \ Der_4e \ \ Br_3 (\\<^sub>D \)" using dual_def Der_4e_def MONO_ADDIb MONO_def unfolding Br_der_def Br_3_def conn by smt + +text\\noindent{Frontier operator as derived from derivative.}\ +definition Fr_der::"(\\\)\(\\\)" ("\\<^sub>D") where "\\<^sub>D \ \ \A. (A \<^bold>\ \\<^sup>d(A)) \<^bold>\ (\(A) \<^bold>\ A)" +text\\noindent{Verify definition:}\ +lemma Fr_der_def2: "\\<^sub>D \ = (\A. (A \<^bold>\ \(A)) \<^bold>\ (\<^bold>\A \<^bold>\ \(\<^bold>\A)))" unfolding Fr_der_def dual_def conn by auto +text\\noindent{Verify properties:}\ +lemma FD1a: "Der_1a \ \ Fr_1a(\\<^sub>D \)" unfolding Fr_1a_def Fr_der_def using CI1a MULT_b_def conn by auto +lemma FD1b: "Der_1b \ \ Fr_1b(\\<^sub>D \)" unfolding Fr_1b_def Fr_der_def using CI1b MULT_a_def conn by smt +lemma FD1: "Der_1 \ \ Fr_1(\\<^sub>D \)" unfolding Fr_1_def Fr_der_def using CI1 MULT_def conn by auto +lemma FD2: "Fr_2(\\<^sub>D \)" using dual_def dual_symm unfolding Fr_2_def Fr_der_def conn by metis +lemma FD3: "Der_3 \ \ Fr_3(\\<^sub>D \)" by (simp add: NOR_def Fr_der_def conn) +lemma FD4: "Der_1 \ \ Der_4e \ \ Fr_4(\\<^sub>D \)" by (metis CD1b CD2 CD4 Cl_8_def Cl_der_def Fr_4_def Fr_der_def2 PC1 PC8 meet_def) + +text\\noindent{Note that the derivative operation cannot be obtained from interior, closure, border, nor frontier. +In this respect the derivative is a fundamental operation.}\ + +subsubsection \Infinitary conditions\ + +text\\noindent{The corresponding infinitary condition on derivative operators is inherited from the one for closure.}\ +abbreviation "Der_inf \ \ Cl_inf(\)" + +lemma CD_inf: "Der_inf \ \ Cl_inf(\\<^sub>D \)" unfolding iADDI_a_def by (smt Cl_der_def Fr_2_def Ra_restr_ex compl_def dom_compl_def2 iDM_b join_def meet_def supremum_def) +lemma ID_inf: "Der_inf \ \ Int_inf(\\<^sub>D \)" by (simp add: CD_inf dual_der2 iADDI_MULT_dual1) + +text\\noindent{This condition is indeed strong enough as to entail closure of some fixed-point predicates under infimum/supremum.}\ +lemma fp_ID_inf_closed: "Der_inf \ \ infimum_closed (fp (\\<^sub>D \))" by (metis (full_types) ID2 ID_inf Ra_restr_all dEXP_def iMULT_b_def inf_char) +lemma fp_CD_sup_closed: "Der_inf \ \ supremum_closed (fp (\\<^sub>D \))" by (metis (full_types) CD_inf Cl_der_def Ra_restr_ex iADDI_a_def join_def supremum_def) + + +subsubsection \Coherence conditions\ +text\\noindent{We finish this section by introducing the `coherence' operator (Cantor's `Koherenz') as discussed +by Zarycki in @{cite Zarycki2}. As happens with the derivative operator, the coherence operator cannot +be derived from interior, closure, border, nor frontier.}\ + +definition "Kh_1 \ \ ADDI_b \" +definition "Kh_2 \ \ dEXP \" +definition "Kh_3 \ \ \A. \(\\<^sup>d A) \<^bold>\ \\<^sup>d(\ A)" + +lemma PK1: "Kh_1 \ \ MONO \" using ADDI_b_def Kh_1_def MONO_ADDIb by auto +lemma PK2: "Kh_1 \ \ \A B. \(A \<^bold>\ B) \<^bold>\ (\ A) \<^bold>\ (\ B)" using MULT_a_def MONO_MULTa PK1 by auto +lemma PK3: "Kh_2 \ \ \ \<^bold>\ \<^bold>\ \<^bold>\" using Kh_2_def dEXP_def unfolding conn by auto +lemma PK4: "Kh_1 \ \ Kh_3 \ \ \ \<^bold>\ \<^bold>\ \<^bold>\" using MONO_def PK1 dual_def unfolding Kh_3_def conn by metis +lemma PK5: "Kh_2 \ \ \A. \(\<^bold>\A) \<^bold>\ \<^bold>\(\ A)" unfolding Kh_2_def dEXP_def conn by metis +lemma PK6: "Kh_1 \ \ Kh_2 \ \ \A B. \(A \<^bold>\ B) \<^bold>\ (\ A) \<^bold>\ (\ B)" unfolding conn by (metis (no_types, lifting) Kh_2_def dEXP_def MONO_def PK1) +lemma PK7: "Kh_3 \ \ \A. \(\(\<^bold>\(\ A))) \<^bold>\ \(\<^bold>\(\(\\<^sup>d A)))" proof - + assume kh3: "Kh_3 \" + { fix A + from kh3 have "\(\\<^sup>d A) = \\<^sup>d(\ A)" using Kh_3_def by auto + hence "\(\<^bold>\(\(\\<^sup>d A))) \<^bold>\ \(\(\<^bold>\(\ A)))" unfolding dual_def conn by simp + } thus ?thesis by simp +qed +lemma PK8: "Kh_3 \ \ \A. \(\<^bold>\(\(\ A))) \<^bold>\ \\<^sup>d(\(\<^bold>\(\ A)))" proof - + assume kh3: "Kh_3 \" + { fix A + from kh3 have aux: "\\<^sup>d(\ A) \<^bold>\ \(\\<^sup>d A)" using Kh_3_def by simp + have "let A=\<^bold>\(\ A) in (\\<^sup>d(\ A) \<^bold>\ \(\\<^sup>d A))" using Kh_3_def kh3 by auto + hence "\(\<^bold>\(\(\ A))) \<^bold>\ \\<^sup>d(\(\<^bold>\(\ A)))" unfolding dual_def conn by simp + } thus ?thesis by simp +qed + +text\\noindent{Coherence operator as derived from derivative (requires conditions Der-2 and Der-4).}\ +definition Kh_der::"(\\\)\(\\\)" ("\\<^sub>D") where "\\<^sub>D \ \ \A. A \<^bold>\ (\ A)" +text\\noindent{Verify properties:}\ +lemma KD1: "Der_1 \ \ Kh_1 (\\<^sub>D \)" using PC1 PD3 PK2 ADDI_def Kh_der_def unfolding conn by (metis (full_types)) +lemma KD2: "Kh_2 (\\<^sub>D \)" by (simp add: Kh_2_def dEXP_def Kh_der_def conn) +lemma KD3: "Der_1 \ \ Der_2 \ \ Der_4 \ \ Kh_3 (\\<^sub>D \)" proof - + assume der1: "Der_1 \" and der2: "Der_2 \" and der4: "Der_4 \" + { fix A + from der1 have aux1: "let M=A ; N=(\\<^sup>d A) in \(M \<^bold>\ N) \<^bold>\ (\ M \<^bold>\ \ N)" unfolding ADDI_def by simp + from der1 der2 der4 have aux2: "(\\<^sup>d A) \<^bold>\ (\ A) \<^bold>\ \\<^sup>d(A \<^bold>\ \ A)" using PD12 by simp + have "(\\<^sub>D \)((\\<^sub>D \)\<^sup>d A) = (\<^bold>\(\<^bold>\A \<^bold>\ \ (\<^bold>\A)) \<^bold>\ \ (\<^bold>\(\<^bold>\A \<^bold>\ \ (\<^bold>\A))))" unfolding Kh_der_def dual_def by simp + also have "... = (A \<^bold>\ \\<^sup>d A) \<^bold>\ \(A \<^bold>\ \\<^sup>d A)" unfolding dual_def conn by simp + also from aux1 have "... = (A \<^bold>\ \\<^sup>d A) \<^bold>\ (\ A \<^bold>\ \(\\<^sup>d A))" unfolding conn by meson + also have "... = (A \<^bold>\ \ A) \<^bold>\ \\<^sup>d A" using PD6 PD8 der1 der2 der4 unfolding conn by blast + also have "... = (A \<^bold>\ \ A) \<^bold>\ (\\<^sup>d A \<^bold>\ \ A)" using PD6 der1 der2 unfolding conn by blast + also have "... = (A \<^bold>\ \\<^sup>d A) \<^bold>\ (\ A)" unfolding conn by auto + also from aux2 have "... = (A \<^bold>\ \ A) \<^bold>\ \\<^sup>d(A \<^bold>\ \ A)" unfolding dual_def conn by meson + also have "... = \<^bold>\(\<^bold>\(A \<^bold>\ \ A) \<^bold>\ \ (\<^bold>\(A \<^bold>\ \ A)))" unfolding dual_def conn by simp + also have "... = (\\<^sub>D \)\<^sup>d((\\<^sub>D \) A)" unfolding Kh_der_def dual_def by simp + finally have "(\\<^sub>D \)((\\<^sub>D \)\<^sup>d A) \<^bold>\ (\\<^sub>D \)\<^sup>d((\\<^sub>D \) A)" by simp + } thus ?thesis unfolding Kh_3_def by simp +qed + +end diff --git a/thys/Topological_Semantics/topo_strict_implication.thy b/thys/Topological_Semantics/topo_strict_implication.thy new file mode 100644 --- /dev/null +++ b/thys/Topological_Semantics/topo_strict_implication.thy @@ -0,0 +1,115 @@ +theory topo_strict_implication + imports topo_frontier_algebra +begin +nitpick_params[assms=true, user_axioms=true, show_all, expect=genuine, format=3] (*default Nitpick settings*) + +section \Strict implication\ + +text\\noindent{We can also employ the closure and interior operations to define different sorts of implications. +In this section we preliminary explore a sort of strict implication and check some relevant properties.}\ + +text\\noindent{A 'strict' implication should entail the classical one. Hence we define it using the interior operator.}\ +definition imp_I::"\\\\\" (infix "\<^bold>\" 51) where "\ \<^bold>\ \ \ \(\ \<^bold>\ \)" +abbreviation imp_I'::"\\\\\" (infix "\<^bold>\" 51) where "\ \<^bold>\ \ \ \ \<^bold>\ \" +declare imp_I_def[conn] + +lemma imp_rel: "\a b. a \<^bold>\ b \<^bold>\ a \<^bold>\ b" by (simp add: Int_fr_def conn) + +text\\noindent{Under appropriate conditions this implication satisfies a weak variant of the deduction theorem (DT),}\ +lemma DTw1: "\a b. a \<^bold>\ b \<^bold>\ \<^bold>\ \ a \<^bold>\ b" by (simp add: Int_fr_def conn) +lemma DTw2: "Fr_2 \ \ Fr_3 \ \ \a b. a \<^bold>\ b \ a \<^bold>\ b \<^bold>\ \<^bold>\" using IF3 dNOR_def unfolding conn by auto +text\\noindent{and a variant of modus ponens and modus tollens resp.}\ +lemma MP: "\a b. a \<^bold>\ (a \<^bold>\ b) \<^bold>\ b" by (simp add: Int_fr_def conn) +lemma MT: "\a b. (a \<^bold>\ b) \<^bold>\ \<^bold>\b \<^bold>\ \<^bold>\a" using MP conn by auto + +text\\noindent{However the full DT (actually right-to-left: implication introduction) is not valid.}\ +lemma DT1: "\a b X. X \<^bold>\ a \<^bold>\ b \ X \<^bold>\ a \<^bold>\ b" by (simp add: Int_fr_def conn) +lemma DT2: "\ \ \ \a b X. X \<^bold>\ a \<^bold>\ b \ X \<^bold>\ a \<^bold>\ b" nitpick oops (*counterexample*) + +text\\noindent{This implication has thus a sort of 'relevant' behaviour. For instance, the following are not valid:}\ +lemma "\ \ \ \a b. (a \<^bold>\ (b \<^bold>\ a)) \<^bold>\ \<^bold>\" nitpick oops (*counterexample*) +lemma "\ \ \ \a b. (a \<^bold>\ ((a \<^bold>\ b) \<^bold>\ b)) \<^bold>\ \<^bold>\" nitpick oops (*counterexample*) +lemma "\ \ \ \a b c. (a \<^bold>\ b) \<^bold>\ (b \<^bold>\ c) \<^bold>\ \<^bold>\" nitpick oops (*counterexample*) +lemma "\ \ \ \a b. ((a \<^bold>\ b) \<^bold>\ a) \<^bold>\ a \<^bold>\ \<^bold>\" nitpick oops (*counterexample*) + +text\\noindent{In contrast the properties below are valid for appropriate conditions.}\ +lemma iprop0: "Fr_2 \ \ Fr_3 \ \ \a. a \<^bold>\ a \<^bold>\ \<^bold>\" using DTw2 pI2 by fastforce +lemma iprop1: "Fr_2 \ \ Fr_3 \ \ \a b. a \<^bold>\ (a \<^bold>\ b) \<^bold>\ b \<^bold>\ \<^bold>\" using DTw2 pI2 unfolding conn by fastforce +lemma iprop2: "Fr_2 \ \ Fr_3 \ \ \a b. a \<^bold>\ (b \<^bold>\ b) \<^bold>\ \<^bold>\" using DTw2 pI2 unfolding conn by fastforce +lemma iprop3: "Fr_2 \ \ Fr_3 \ \ \a b. ((a \<^bold>\ a) \<^bold>\ b) \<^bold>\ b \<^bold>\ \<^bold>\" using DTw2 pI2 unfolding conn by fastforce +lemma iprop4: "Fr_2 \ \ Fr_3 \ \ \a b. (a \<^bold>\ b) \<^bold>\ a \<^bold>\ \<^bold>\" using DTw2 pI2 unfolding conn by fastforce +lemma iprop5: "Fr_2 \ \ Fr_3 \ \ \a b. a \<^bold>\ (a \<^bold>\ b) \<^bold>\ \<^bold>\" using DTw2 pI2 unfolding conn by fastforce +lemma iprop6a: "Fr_2 \ \ Fr_3 \ \ \a b c. (a \<^bold>\ (b \<^bold>\ c)) \<^bold>\ ((a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c)) \<^bold>\ \<^bold>\" using DTw2 pI2 unfolding conn by fastforce +lemma iprop6b: "Fr_2 \ \ Fr_3 \ \ \a b c. (a \<^bold>\ (b \<^bold>\ c)) \<^bold>\ ((a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c)) \<^bold>\ \<^bold>\" using DTw2 unfolding conn by fastforce + +lemma iprop7': "Fr_1 \ \ \a b c. (a \<^bold>\ b) \<^bold>\ (b \<^bold>\ c) \<^bold>\ (a \<^bold>\ c)" proof - + assume fr1: "Fr_1 \" + { fix a b c + have "(a \<^bold>\ b) \<^bold>\ (b \<^bold>\ c) \<^bold>\ (a \<^bold>\ c)" unfolding conn by simp + hence "\((a \<^bold>\ b) \<^bold>\ (b \<^bold>\ c)) \<^bold>\ \(a \<^bold>\ c)" using MONO_def PF1 fr1 monI by simp + moreover from fr1 have "let A=(a \<^bold>\ b); B=(b \<^bold>\ c) in \(A \<^bold>\ B) \<^bold>\ \ A \<^bold>\ \ B" using IF1 MULT_def by simp + ultimately have "\(a \<^bold>\ b) \<^bold>\ \(b \<^bold>\ c) \<^bold>\ \(a \<^bold>\ c)" unfolding conn by simp + } thus ?thesis unfolding conn by blast +qed +lemma iprop7: "Fr_1 \ \ Fr_2 \ \ Fr_3 \ \ \a b c. ((a \<^bold>\ b) \<^bold>\ (b \<^bold>\ c)) \<^bold>\ (a \<^bold>\ c) \<^bold>\ \<^bold>\" by (simp add: DTw2 iprop7') + +lemma iprop8a': "Fr_1 \ \ \a b c. (a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c) \<^bold>\ a \<^bold>\ (b \<^bold>\ c)" proof - + assume fr1: "Fr_1 \" + { fix a b c + have "(a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c) \<^bold>\ (a \<^bold>\ (b \<^bold>\ c))" unfolding conn by simp + hence "\((a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c)) \<^bold>\ \(a \<^bold>\ (b \<^bold>\ c))" using MONO_def PF1 fr1 monI by simp + moreover from fr1 have "let A=(a \<^bold>\ b); B=(a \<^bold>\ c) in \(A \<^bold>\ B) \<^bold>\ \ A \<^bold>\ \ B" using IF1 MULT_def by simp + ultimately have "\(a \<^bold>\ b) \<^bold>\ \(a \<^bold>\ c) \<^bold>\ \(a \<^bold>\ (b \<^bold>\ c))" unfolding conn by simp + } thus ?thesis unfolding conn by simp +qed +lemma iprop8b': "Fr_1b \ \ \a b c. (a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c) \<^bold>\ a \<^bold>\ (b \<^bold>\ c)" by (smt MONO_def monI conn) +lemma iprop8a: "Fr_1 \ \ Fr_2 \ \ Fr_3 \ \ \a b c. ((a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c)) \<^bold>\ (a \<^bold>\ (b \<^bold>\ c)) \<^bold>\ \<^bold>\" by (simp add: DTw2 iprop8a') +lemma iprop8b: "Fr_1b \ \ Fr_2 \ \ Fr_3 \ \ \a b c. ((a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c)) \<^bold>\ (a \<^bold>\ (b \<^bold>\ c)) \<^bold>\ \<^bold>\" by (simp add: DTw2 iprop8b') + +lemma iprop9a': "Fr_1 \ \ \a b c. ((a \<^bold>\ b) \<^bold>\ (c \<^bold>\ b)) \<^bold>\ ((a \<^bold>\ c) \<^bold>\ b)" proof - + assume fr1: "Fr_1 \" + { fix a b c + have "(a \<^bold>\ b) \<^bold>\ (c \<^bold>\ b) \<^bold>\ (a \<^bold>\ c) \<^bold>\ b" unfolding conn by simp + hence "\((a \<^bold>\ b) \<^bold>\ (c \<^bold>\ b)) \<^bold>\ \((a \<^bold>\ c) \<^bold>\ b)" using MONO_def PF1 fr1 monI by simp + moreover from fr1 have "let A=(a \<^bold>\ b); B=(c \<^bold>\ b) in \(A \<^bold>\ B) \<^bold>\ \ A \<^bold>\ \ B" using IF1 MULT_def by simp + ultimately have "\(a \<^bold>\ b) \<^bold>\ \(c \<^bold>\ b) \<^bold>\ \((a \<^bold>\ c) \<^bold>\ b)" unfolding conn by simp + } thus ?thesis unfolding conn by simp +qed +lemma iprop9b': "Fr_1b \ \ \a b c. ((a \<^bold>\ b) \<^bold>\ (c \<^bold>\ b)) \<^bold>\ ((a \<^bold>\ c) \<^bold>\ b)" by (smt MONO_def monI conn) +lemma iprop9a: "Fr_1 \ \ Fr_2 \ \ Fr_3 \ \ \a b c. ((a \<^bold>\ b) \<^bold>\ (c \<^bold>\ b)) \<^bold>\ ((a \<^bold>\ c) \<^bold>\ b) \<^bold>\ \<^bold>\" by (simp add: DTw2 iprop9a') +lemma iprop9b: "Fr_1b \ \ Fr_2 \ \ Fr_3 \ \ \a b c. ((a \<^bold>\ b) \<^bold>\ (c \<^bold>\ b)) \<^bold>\ ((a \<^bold>\ c) \<^bold>\ b) \<^bold>\ \<^bold>\" by (simp add: DTw2 iprop9b') + +lemma iprop10': "Fr_1 \ \ Fr_2 \ \ Fr_4 \ \ \a b c. a \<^bold>\ (b \<^bold>\ c) \<^bold>\ (a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c)" proof - + assume fr1: "Fr_1 \" and fr2: "Fr_2 \" and fr4: "Fr_4 \" + { fix a b c + have "a \<^bold>\ (b \<^bold>\ c) \<^bold>\ (a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c)" unfolding conn by simp + hence "a \<^bold>\ (b \<^bold>\ c) \<^bold>\ (a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c)" using Int_fr_def conn by auto + hence "\(a \<^bold>\ (b \<^bold>\ c)) \<^bold>\ \((a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c))" using MONO_def PF1 fr1 monI by simp + moreover from fr1 have "let A=(a \<^bold>\ b); B=(a \<^bold>\ c) in \(A \<^bold>\ B) \<^bold>\ \ A \<^bold>\ \ B" using IF1 Int_7_def PI7 by auto + ultimately have "\(a \<^bold>\ (b \<^bold>\ c)) \<^bold>\ \(a \<^bold>\ b) \<^bold>\ \(a \<^bold>\ c)" by (metis (full_types)) + hence "\(\(a \<^bold>\ (b \<^bold>\ c))) \<^bold>\ \(\(a \<^bold>\ b) \<^bold>\ \(a \<^bold>\ c))" using MONO_def PF1 fr1 monI by simp + hence "\(a \<^bold>\ (b \<^bold>\ c)) \<^bold>\ \(\(a \<^bold>\ b) \<^bold>\ \(a \<^bold>\ c))" using Int_Open PF1 fr1 fr2 fr4 by blast + hence "(a \<^bold>\ (b \<^bold>\ c)) \<^bold>\ (a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c)" using Int_Open PF1 fr1 fr2 fr4 unfolding conn by blast + } thus ?thesis by blast +qed +lemma iprop10: "Fr_1 \ \ Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ \a b c. (a \<^bold>\ (b \<^bold>\ c)) \<^bold>\ ((a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c)) \<^bold>\ \<^bold>\" by (simp add: DTw2 iprop10') +lemma "\ \ \ \a b c. a \<^bold>\ (b \<^bold>\ c) \<^bold>\ (a \<^bold>\ b) \<^bold>\ (a \<^bold>\ c)" nitpick oops (*counterexample*) + +lemma iprop11a': "Fr_1 \ \ \a b. (a \<^bold>\ (a \<^bold>\ b)) \<^bold>\ (a \<^bold>\ b)" by (smt MONO_def PF1 imp_rel monI conn) +lemma iprop11b': "\ \ \ \a b. (a \<^bold>\ (a \<^bold>\ b)) \<^bold>\ (a \<^bold>\ b)" unfolding PF1 by (metis Int_Open MONO_def imp_I_def impl_def monI) +lemma iprop11a: "Fr_1 \ \ Fr_2 \ \ Fr_3 \ \ \a b. (a \<^bold>\ (a \<^bold>\ b)) \<^bold>\ (a \<^bold>\ b) \<^bold>\ \<^bold>\" using DTw2 iprop11a' by blast +lemma iprop11b: "\ \ \ \a b. (a \<^bold>\ (a \<^bold>\ b)) \<^bold>\ (a \<^bold>\ b) \<^bold>\ \<^bold>\" using DTw2 iprop11b' by blast + +text\\noindent{In particular, 'strenghening the antecedent' is valid only under certain conditions:}\ +lemma SA':"Fr_1b \ \ \a b c. a \<^bold>\ c \<^bold>\ (a \<^bold>\ b) \<^bold>\ c" by (smt MONO_def monI conn) +lemma SA: "Fr_1b \ \ Fr_2 \ \ Fr_3 \ \ \a b c. (a \<^bold>\ c) \<^bold>\ ((a \<^bold>\ b) \<^bold>\ c) \<^bold>\ \<^bold>\" using SA' using DTw2 by fastforce +lemma "Fr_1a \ \ Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ \a b c. a \<^bold>\ c \<^bold>\ (a \<^bold>\ b) \<^bold>\ c" nitpick oops (*counterexample*) +lemma "Fr_1a \ \ Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ \a b c. (a \<^bold>\ c) \<^bold>\ ((a \<^bold>\ b) \<^bold>\ c) \<^bold>\ \<^bold>\" nitpick oops (*counterexample*) + +text\\noindent{Similarly, 'weakening the consequent' is valid only under certain conditions.}\ +lemma WC':"Fr_1b \ \ \a b c. a \<^bold>\ c \<^bold>\ a \<^bold>\ (c \<^bold>\ b)" by (smt MONO_def monI conn) +lemma WC: "Fr_1b \ \ Fr_2 \ \ Fr_3 \ \ \a b c. (a \<^bold>\ c) \<^bold>\ (a \<^bold>\ (c \<^bold>\ b)) \<^bold>\ \<^bold>\" using DTw2 WC' by fastforce +lemma "Fr_1a \ \ Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ \a b c. a \<^bold>\ c \<^bold>\ a \<^bold>\ (c \<^bold>\ b)" nitpick oops (*counterexample*) +lemma "Fr_1a \ \ Fr_2 \ \ Fr_3 \ \ Fr_4 \ \ \a b c. (a \<^bold>\ c) \<^bold>\ (a \<^bold>\ (c \<^bold>\ b)) \<^bold>\ \<^bold>\" nitpick oops (*counterexample*) + +end diff --git a/web/entries/Aggregation_Algebras.html b/web/entries/Aggregation_Algebras.html --- a/web/entries/Aggregation_Algebras.html +++ b/web/entries/Aggregation_Algebras.html @@ -1,199 +1,199 @@ Aggregation Algebras - Archive of Formal Proofs

 

 

 

 

 

 

Aggregation Algebras

 

- +
Title: Aggregation Algebras
Author: Walter Guttmann
Submission date: 2018-09-15
Abstract: We develop algebras for aggregation and minimisation for weight matrices and for edge weights in graphs. We verify the correctness of Prim's and Kruskal's minimum spanning tree algorithms based on these algebras. We also show numerous instances of these algebras based on linearly ordered commutative semigroups.
BibTeX:
@article{Aggregation_Algebras-AFP,
   author  = {Walter Guttmann},
   title   = {Aggregation Algebras},
   journal = {Archive of Formal Proofs},
   month   = sep,
   year    = 2018,
   note    = {\url{https://isa-afp.org/entries/Aggregation_Algebras.html},
             Formal proof development},
   ISSN    = {2150-914x},
 }
License: BSD License
Depends on: Stone_Kleene_Relation_Algebras
Used by:Relational_Disjoint_Set_Forests, Relational_Minimum_Spanning_Trees
Relational_Minimum_Spanning_Trees

\ No newline at end of file diff --git a/web/entries/Algebraic_Numbers.html b/web/entries/Algebraic_Numbers.html --- a/web/entries/Algebraic_Numbers.html +++ b/web/entries/Algebraic_Numbers.html @@ -1,228 +1,236 @@ Algebraic Numbers in Isabelle/HOL - Archive of Formal Proofs

 

 

 

 

 

 

Algebraic Numbers in Isabelle/HOL

 

+ + + +
Title: Algebraic Numbers in Isabelle/HOL
Authors: René Thiemann, Akihisa Yamada and Sebastiaan Joosten
+ Contributor: + + Manuel Eberl +
Submission date: 2015-12-22
Abstract: Based on existing libraries for matrices, factorization of rational polynomials, and Sturm's theorem, we formalized algebraic numbers in Isabelle/HOL. Our development serves as an implementation for real and complex numbers, and it admits to compute roots and completely factorize real and complex polynomials, provided that all coefficients are rational numbers. Moreover, we provide two implementations to display algebraic numbers, an injective and expensive one, or a faster but approximative version.

To this end, we mechanized several results on resultants, which also required us to prove that polynomials over a unique factorization domain form again a unique factorization domain.

Change history: [2016-01-29]: Split off Polynomial Interpolation and Polynomial Factorization
[2017-04-16]: Use certified Berlekamp-Zassenhaus factorization, use subresultant algorithm for computing resultants, improved bisection algorithm
BibTeX:
@article{Algebraic_Numbers-AFP,
   author  = {René Thiemann and Akihisa Yamada and Sebastiaan Joosten},
   title   = {Algebraic Numbers in Isabelle/HOL},
   journal = {Archive of Formal Proofs},
   month   = dec,
   year    = 2015,
   note    = {\url{https://isa-afp.org/entries/Algebraic_Numbers.html},
             Formal proof development},
   ISSN    = {2150-914x},
 }
License: BSD License
Depends on: Berlekamp_Zassenhaus, Sturm_Sequences
Used by: LLL_Basis_Reduction

\ No newline at end of file diff --git a/web/entries/CSP_RefTK.html b/web/entries/CSP_RefTK.html new file mode 100644 --- /dev/null +++ b/web/entries/CSP_RefTK.html @@ -0,0 +1,203 @@ + + + + +The HOL-CSP Refinement Toolkit - Archive of Formal Proofs + + + + + + + + + + + + + + + + + + + + + + + + +
+

 

+ + + +

 

+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

 

+

 

+
+
+

 

+

The + + HOL-CSP + + Refinement + + Toolkit + +

+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Title:The HOL-CSP Refinement Toolkit
+ Authors: + + Safouan Taha (safouan /dot/ taha /at/ lri /dot/ fr), + Burkhart Wolff and + Lina Ye (lina /dot/ ye /at/ lri /dot/ fr) +
Submission date:2020-11-19
Abstract: +We use a formal development for CSP, called HOL-CSP2.0, to analyse a +family of refinement notions, comprising classic and new ones. This +analysis enables to derive a number of properties that allow to deepen +the understanding of these notions, in particular with respect to +specification decomposition principles for the case of infinite sets +of events. The established relations between the refinement relations +help to clarify some obscure points in the CSP literature, but also +provide a weapon for shorter refinement proofs. Furthermore, we +provide a framework for state-normalisation allowing to formally +reason on parameterised process architectures. As a result, we have a +modern environment for formal proofs of concurrent systems that allow +for the combination of general infinite processes with locally finite +ones in a logically safe way. We demonstrate these +verification-techniques for classical, generalised examples: The +CopyBuffer for arbitrary data and the Dijkstra's Dining +Philosopher Problem of arbitrary size.
BibTeX: +
@article{CSP_RefTK-AFP,
+  author  = {Safouan Taha and Burkhart Wolff and Lina Ye},
+  title   = {The HOL-CSP Refinement Toolkit},
+  journal = {Archive of Formal Proofs},
+  month   = nov,
+  year    = 2020,
+  note    = {\url{https://isa-afp.org/entries/CSP_RefTK.html},
+            Formal proof development},
+  ISSN    = {2150-914x},
+}
+
License:BSD License
Depends on:HOL-CSP
+ +

+ + + + + + + + + + + + + + + + + + +
+
+ + + + + + \ No newline at end of file diff --git a/web/entries/Delta_System_Lemma.html b/web/entries/Delta_System_Lemma.html new file mode 100644 --- /dev/null +++ b/web/entries/Delta_System_Lemma.html @@ -0,0 +1,192 @@ + + + + +Cofinality and the Delta System Lemma - Archive of Formal Proofs + + + + + + + + + + + + + + + + + + + + + + + + +
+

 

+ + + +

 

+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

 

+

 

+
+
+

 

+

Cofinality + + and + + the + + Delta + + System + + Lemma + +

+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Title:Cofinality and the Delta System Lemma
+ Author: + + Pedro Sánchez Terraf +
Submission date:2020-12-27
Abstract: +We formalize the basic results on cofinality of linearly ordered sets +and ordinals and Šanin’s Lemma for uncountable families of finite +sets. This last result is used to prove the countable chain condition +for Cohen posets. We work in the set theory framework of Isabelle/ZF, +using the Axiom of Choice as needed.
BibTeX: +
@article{Delta_System_Lemma-AFP,
+  author  = {Pedro Sánchez Terraf},
+  title   = {Cofinality and the Delta System Lemma},
+  journal = {Archive of Formal Proofs},
+  month   = dec,
+  year    = 2020,
+  note    = {\url{https://isa-afp.org/entries/Delta_System_Lemma.html},
+            Formal proof development},
+  ISSN    = {2150-914x},
+}
+
License:BSD License
+ +

+ + + + + + + + + + + + + + + + + + +
+
+ + + + + + \ No newline at end of file diff --git a/web/entries/Forcing.html b/web/entries/Forcing.html --- a/web/entries/Forcing.html +++ b/web/entries/Forcing.html @@ -1,191 +1,191 @@ Formalization of Forcing in Isabelle/ZF - Archive of Formal Proofs

 

 

 

 

 

 

Formalization of Forcing in Isabelle/ZF

 

Title: Formalization of Forcing in Isabelle/ZF
Authors: Emmanuel Gunther (gunther /at/ famaf /dot/ unc /dot/ edu /dot/ ar), Miguel Pagano and - Pedro Sánchez Terraf + Pedro Sánchez Terraf
Submission date: 2020-05-06
Abstract: We formalize the theory of forcing in the set theory framework of Isabelle/ZF. Under the assumption of the existence of a countable transitive model of ZFC, we construct a proper generic extension and show that the latter also satisfies ZFC.
BibTeX:
@article{Forcing-AFP,
   author  = {Emmanuel Gunther and Miguel Pagano and Pedro Sánchez Terraf},
   title   = {Formalization of Forcing in Isabelle/ZF},
   journal = {Archive of Formal Proofs},
   month   = may,
   year    = 2020,
   note    = {\url{https://isa-afp.org/entries/Forcing.html},
             Formal proof development},
   ISSN    = {2150-914x},
 }
License: BSD License

\ No newline at end of file diff --git a/web/entries/HOL-CSP.html b/web/entries/HOL-CSP.html --- a/web/entries/HOL-CSP.html +++ b/web/entries/HOL-CSP.html @@ -1,207 +1,209 @@ HOL-CSP Version 2.0 - Archive of Formal Proofs

 

 

 

 

 

 

HOL-CSP Version 2.0

 

- + + +
Title: HOL-CSP Version 2.0
Authors: Safouan Taha (safouan /dot/ taha /at/ lri /dot/ fr), Lina Ye (lina /dot/ ye /at/ lri /dot/ fr) and Burkhart Wolff
Submission date: 2019-04-26
Abstract: This is a complete formalization of the work of Hoare and Roscoe on the denotational semantics of the Failure/Divergence Model of CSP. It follows essentially the presentation of CSP in Roscoe’s Book ”Theory and Practice of Concurrency” [8] and the semantic details in a joint Paper of Roscoe and Brooks ”An improved failures model for communicating processes". The present work is based on a prior formalization attempt, called HOL-CSP 1.0, done in 1997 by H. Tej and B. Wolff with the Isabelle proof technology available at that time. This work revealed minor, but omnipresent foundational errors in key concepts like the process invariant. The present version HOL-CSP profits from substantially improved libraries (notably HOLCF), improved automated proof techniques, and structured proof techniques in Isar and is substantially shorter but more complete.
BibTeX:
@article{HOL-CSP-AFP,
   author  = {Safouan Taha and Lina Ye and Burkhart Wolff},
   title   = {HOL-CSP Version 2.0},
   journal = {Archive of Formal Proofs},
   month   = apr,
   year    = 2019,
   note    = {\url{https://isa-afp.org/entries/HOL-CSP.html},
             Formal proof development},
   ISSN    = {2150-914x},
 }
License: BSD License
Used by:CSP_RefTK

\ No newline at end of file diff --git a/web/entries/Hybrid_Systems_VCs.html b/web/entries/Hybrid_Systems_VCs.html --- a/web/entries/Hybrid_Systems_VCs.html +++ b/web/entries/Hybrid_Systems_VCs.html @@ -1,203 +1,207 @@ Verification Components for Hybrid Systems - Archive of Formal Proofs

 

 

 

 

 

 

Verification Components for Hybrid Systems

 

+ + + + - +
Title: Verification Components for Hybrid Systems
Author: Jonathan Julian Huerta y Munive (jjhuertaymunive1 /at/ sheffield /dot/ ac /dot/ uk)
Submission date: 2019-09-10
Abstract: These components formalise a semantic framework for the deductive verification of hybrid systems. They support reasoning about continuous evolutions of hybrid programs in the style of differential dynamics logic. Vector fields or flows model these evolutions, and their verification is done with invariants for the former or orbits for the latter. Laws of modal Kleene algebra or categorical predicate transformers implement the verification condition generation. Examples show the approach at work.
Change history:[2020-12-13]: added components based on Kleene algebras with tests. These implement differential Hoare logic (dH) and a Morgan-style differential refinement calculus (dR) for verification of hybrid programs.
BibTeX:
@article{Hybrid_Systems_VCs-AFP,
   author  = {Jonathan Julian Huerta y Munive},
   title   = {Verification Components for Hybrid Systems},
   journal = {Archive of Formal Proofs},
   month   = sep,
   year    = 2019,
   note    = {\url{https://isa-afp.org/entries/Hybrid_Systems_VCs.html},
             Formal proof development},
   ISSN    = {2150-914x},
 }
License: BSD License
Depends on:KAD, Ordinary_Differential_Equations, Transformer_Semantics
KAD, KAT_and_DRA, Ordinary_Differential_Equations, Transformer_Semantics
Used by: Matrices_for_ODEs

\ No newline at end of file diff --git a/web/entries/KAT_and_DRA.html b/web/entries/KAT_and_DRA.html --- a/web/entries/KAT_and_DRA.html +++ b/web/entries/KAT_and_DRA.html @@ -1,247 +1,247 @@ Kleene Algebra with Tests and Demonic Refinement Algebras - Archive of Formal Proofs

 

 

 

 

 

 

Kleene Algebra with Tests and Demonic Refinement Algebras

 

- +
Title: Kleene Algebra with Tests and Demonic Refinement Algebras
Authors: Alasdair Armstrong, Victor B. F. Gomes (vb358 /at/ cl /dot/ cam /dot/ ac /dot/ uk) and Georg Struth
Submission date: 2014-01-23
Abstract: We formalise Kleene algebra with tests (KAT) and demonic refinement algebra (DRA) in Isabelle/HOL. KAT is relevant for program verification and correctness proofs in the partial correctness setting. While DRA targets similar applications in the context of total correctness. Our formalisation contains the two most important models of these algebras: binary relations in the case of KAT and predicate transformers in the case of DRA. In addition, we derive the inference rules for Hoare logic in KAT and its relational model and present a simple formally verified program verification tool prototype based on the algebraic approach.
BibTeX:
@article{KAT_and_DRA-AFP,
   author  = {Alasdair Armstrong and Victor B. F. Gomes and Georg Struth},
   title   = {Kleene Algebra with Tests and Demonic Refinement Algebras},
   journal = {Archive of Formal Proofs},
   month   = jan,
   year    = 2014,
   note    = {\url{https://isa-afp.org/entries/KAT_and_DRA.html},
             Formal proof development},
   ISSN    = {2150-914x},
 }
License: BSD License
Depends on: Kleene_Algebra
Used by:Algebraic_VCs
Algebraic_VCs, Hybrid_Systems_VCs

\ No newline at end of file diff --git a/web/entries/MFMC_Countable.html b/web/entries/MFMC_Countable.html --- a/web/entries/MFMC_Countable.html +++ b/web/entries/MFMC_Countable.html @@ -1,249 +1,252 @@ A Formal Proof of the Max-Flow Min-Cut Theorem for Countable Networks - Archive of Formal Proofs

 

 

 

 

 

 

A Formal Proof of the Max-Flow Min-Cut Theorem for Countable Networks

 

+(revision a7a198f5bab0)
+[2020-12-19]: +simpler proof of linkability for bounded unhindered bipartite webs, leading to a simpler proof for networks with bounded out-capacities +(revision 93ca33f4d915)
Title: A Formal Proof of the Max-Flow Min-Cut Theorem for Countable Networks
Author: Andreas Lochbihler
Submission date: 2016-05-09
Abstract: This article formalises a proof of the maximum-flow minimal-cut theorem for networks with countably many edges. A network is a directed graph with non-negative real-valued edge labels and two dedicated vertices, the source and the sink. A flow in a network assigns non-negative real numbers to the edges such that for all vertices except for the source and the sink, the sum of values on incoming edges equals the sum of values on outgoing edges. A cut is a subset of the vertices which contains the source, but not the sink. Our theorem states that in every network, there is a flow and a cut such that the flow saturates all the edges going out of the cut and is zero on all the incoming edges. The proof is based on the paper The Max-Flow Min-Cut theorem for countable networks by Aharoni et al. Additionally, we prove a characterisation of the lifting operation for relations on discrete probability distributions, which leads to a concise proof of its distributivity over relation composition.
Change history: [2017-09-06]: derive characterisation for the lifting operations on discrete distributions from finite version of the max-flow min-cut theorem -(revision a7a198f5bab0)
BibTeX:
@article{MFMC_Countable-AFP,
   author  = {Andreas Lochbihler},
   title   = {A Formal Proof of the Max-Flow Min-Cut Theorem for Countable Networks},
   journal = {Archive of Formal Proofs},
   month   = may,
   year    = 2016,
   note    = {\url{https://isa-afp.org/entries/MFMC_Countable.html},
             Formal proof development},
   ISSN    = {2150-914x},
 }
License: BSD License
Depends on: EdmondsKarp_Maxflow
Used by: Probabilistic_While

\ No newline at end of file diff --git a/web/entries/Relational_Disjoint_Set_Forests.html b/web/entries/Relational_Disjoint_Set_Forests.html --- a/web/entries/Relational_Disjoint_Set_Forests.html +++ b/web/entries/Relational_Disjoint_Set_Forests.html @@ -1,191 +1,191 @@ Relational Disjoint-Set Forests - Archive of Formal Proofs

 

 

 

 

 

 

Relational Disjoint-Set Forests

 

- +
Title: Relational Disjoint-Set Forests
Author: Walter Guttmann
Submission date: 2020-08-26
Abstract: We give a simple relation-algebraic semantics of read and write operations on associative arrays. The array operations seamlessly integrate with assignments in the Hoare-logic library. Using relation algebras and Kleene algebras we verify the correctness of an array-based implementation of disjoint-set forests with a naive union operation and a find operation with path compression.
BibTeX:
@article{Relational_Disjoint_Set_Forests-AFP,
   author  = {Walter Guttmann},
   title   = {Relational Disjoint-Set Forests},
   journal = {Archive of Formal Proofs},
   month   = aug,
   year    = 2020,
   note    = {\url{https://isa-afp.org/entries/Relational_Disjoint_Set_Forests.html},
             Formal proof development},
   ISSN    = {2150-914x},
 }
License: BSD License
Depends on:Aggregation_Algebras, Stone_Kleene_Relation_Algebras
Stone_Kleene_Relation_Algebras
Used by: Relational_Minimum_Spanning_Trees

\ No newline at end of file diff --git a/web/entries/Topological_Semantics.html b/web/entries/Topological_Semantics.html new file mode 100644 --- /dev/null +++ b/web/entries/Topological_Semantics.html @@ -0,0 +1,199 @@ + + + + +Topological semantics for paraconsistent and paracomplete logics - Archive of Formal Proofs + + + + + + + + + + + + + + + + + + + + + + + + +
+

 

+ + + +

 

+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

 

+

 

+
+
+

 

+

Topological + + semantics + + for + + paraconsistent + + and + + paracomplete + + logics + +

+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Title:Topological semantics for paraconsistent and paracomplete logics
+ Author: + + David Fuenmayor (davfuenmayor /at/ gmail /dot/ com) +
Submission date:2020-12-17
Abstract: +We introduce a generalized topological semantics for paraconsistent +and paracomplete logics by drawing upon early works on topological +Boolean algebras (cf. works by Kuratowski, Zarycki, McKinsey & +Tarski, etc.). In particular, this work exemplarily illustrates the +shallow semantical embeddings approach (SSE) +employing the proof assistant Isabelle/HOL. By means of the SSE +technique we can effectively harness theorem provers, model finders +and 'hammers' for reasoning with quantified non-classical +logics.
BibTeX: +
@article{Topological_Semantics-AFP,
+  author  = {David Fuenmayor},
+  title   = {Topological semantics for paraconsistent and paracomplete logics},
+  journal = {Archive of Formal Proofs},
+  month   = dec,
+  year    = 2020,
+  note    = {\url{https://isa-afp.org/entries/Topological_Semantics.html},
+            Formal proof development},
+  ISSN    = {2150-914x},
+}
+
License:BSD License
+ +

+ + + + + + + + + + + + + + + + + + +
+
+ + + + + + \ No newline at end of file diff --git a/web/index.html b/web/index.html --- a/web/index.html +++ b/web/index.html @@ -1,5265 +1,5291 @@ Archive of Formal Proofs

 

 

 

 

 

 

Archive of Formal Proofs

 

The Archive of Formal Proofs is a collection of proof libraries, examples, and larger scientific developments, mechanically checked in the theorem prover Isabelle. It is organized in the way of a scientific journal, is indexed by dblp and has an ISSN: 2150-914x. Submissions are refereed. The preferred citation style is available [here]. We encourage companion AFP submissions to conference and journal publications.

A development version of the archive is available as well.

 

 

+ + + + + + + + +
2020
+ 2020-12-27: Cofinality and the Delta System Lemma +
+ Author: + Pedro Sánchez Terraf +
+ 2020-12-17: Topological semantics for paraconsistent and paracomplete logics +
+ Author: + David Fuenmayor +
2020-12-08: Relational Minimum Spanning Tree Algorithms
Authors: Walter Guttmann and Nicolas Robinson-O'Brien
2020-12-07: Inline Caching and Unboxing Optimization for Interpreters
Author: Martin Desharnais
2020-12-05: The Relational Method with Message Anonymity for the Verification of Cryptographic Protocols
Author: Pasquale Noce
2020-11-22: Isabelle Marries Dirac: a Library for Quantum Computation and Quantum Information
Authors: Anthony Bordg, Hanna Lachnitt and Yijun He
+ 2020-11-19: The HOL-CSP Refinement Toolkit +
+ Authors: + Safouan Taha, + Burkhart Wolff + and Lina Ye +
2020-10-29: Verified SAT-Based AI Planning
Authors: Mohammad Abdulaziz and Friedrich Kurz
2020-10-29: AI Planning Languages Semantics
Authors: Mohammad Abdulaziz and Peter Lammich
2020-10-20: A Sound Type System for Physical Quantities, Units, and Measurements
Authors: Simon Foster and Burkhart Wolff
2020-10-12: Finite Map Extras
Author: Javier Díaz
2020-09-28: A Formal Model of the Safely Composable Document Object Model with Shadow Roots
Authors: Achim D. Brucker and Michael Herzberg
2020-09-28: A Formal Model of the Document Object Model with Shadow Roots
Authors: Achim D. Brucker and Michael Herzberg
2020-09-28: A Formalization of Safely Composable Web Components
Authors: Achim D. Brucker and Michael Herzberg
2020-09-28: A Formalization of Web Components
Authors: Achim D. Brucker and Michael Herzberg
2020-09-28: The Safely Composable DOM
Authors: Achim D. Brucker and Michael Herzberg
2020-09-16: Syntax-Independent Logic Infrastructure
Authors: Andrei Popescu and Dmitriy Traytel
2020-09-16: Robinson Arithmetic
Authors: Andrei Popescu and Dmitriy Traytel
2020-09-16: An Abstract Formalization of Gödel's Incompleteness Theorems
Authors: Andrei Popescu and Dmitriy Traytel
2020-09-16: From Abstract to Concrete Gödel's Incompleteness Theorems—Part II
Authors: Andrei Popescu and Dmitriy Traytel
2020-09-16: From Abstract to Concrete Gödel's Incompleteness Theorems—Part I
Authors: Andrei Popescu and Dmitriy Traytel
2020-09-07: A Formal Model of Extended Finite State Machines
Authors: Michael Foster, Achim D. Brucker, Ramsay G. Taylor and John Derrick
2020-09-07: Inference of Extended Finite State Machines
Authors: Michael Foster, Achim D. Brucker, Ramsay G. Taylor and John Derrick
2020-08-31: Practical Algebraic Calculus Checker
Authors: Mathias Fleury and Daniela Kaufmann
2020-08-31: Some classical results in inductive inference of recursive functions
Author: Frank J. Balbach
2020-08-26: Relational Disjoint-Set Forests
Author: Walter Guttmann
2020-08-25: Extensions to the Comprehensive Framework for Saturation Theorem Proving
Authors: Jasmin Blanchette and Sophie Tourret
2020-08-25: Putting the `K' into Bird's derivation of Knuth-Morris-Pratt string matching
Author: Peter Gammie
2020-08-04: Amicable Numbers
Author: Angeliki Koutsoukou-Argyraki
2020-08-03: Ordinal Partitions
Author: Lawrence C. Paulson
2020-07-21: A Formal Proof of The Chandy--Lamport Distributed Snapshot Algorithm
Authors: Ben Fiedler and Dmitriy Traytel
2020-07-13: Relational Characterisations of Paths
Authors: Walter Guttmann and Peter Höfner
2020-06-01: A Formally Verified Checker of the Safe Distance Traffic Rules for Autonomous Vehicles
Authors: Albert Rizaldi and Fabian Immler
2020-05-23: A verified algorithm for computing the Smith normal form of a matrix
Author: Jose Divasón
2020-05-16: The Nash-Williams Partition Theorem
Author: Lawrence C. Paulson
2020-05-13: A Formalization of Knuth–Bendix Orders
Authors: Christian Sternagel and René Thiemann
2020-05-12: Irrationality Criteria for Series by Erdős and Straus
Authors: Angeliki Koutsoukou-Argyraki and Wenda Li
2020-05-11: Recursion Theorem in ZF
Author: Georgy Dunaev
2020-05-08: An Efficient Normalisation Procedure for Linear Temporal Logic: Isabelle/HOL Formalisation
Author: Salomon Sickert
2020-05-06: Formalization of Forcing in Isabelle/ZF
Authors: Emmanuel Gunther, Miguel Pagano - and Pedro Sánchez Terraf + and Pedro Sánchez Terraf
2020-05-02: Banach-Steinhaus Theorem
Authors: Dominique Unruh and Jose Manuel Rodriguez Caballero
2020-04-27: Attack Trees in Isabelle for GDPR compliance of IoT healthcare systems
Author: Florian Kammueller
2020-04-24: Power Sum Polynomials
Author: Manuel Eberl
2020-04-24: The Lambert W Function on the Reals
Author: Manuel Eberl
2020-04-24: Gaussian Integers
Author: Manuel Eberl
2020-04-19: Matrices for ODEs
Author: Jonathan Julian Huerta y Munive
2020-04-16: Authenticated Data Structures As Functors
Authors: Andreas Lochbihler and Ognjen Marić
2020-04-10: Formalization of an Algorithm for Greedily Computing Associative Aggregations on Sliding Windows
Authors: Lukas Heimes, Dmitriy Traytel and Joshua Schneider
2020-04-09: A Comprehensive Framework for Saturation Theorem Proving
Author: Sophie Tourret
2020-04-09: Formalization of an Optimized Monitoring Algorithm for Metric First-Order Dynamic Logic with Aggregations
Authors: Thibault Dardinier, Lukas Heimes, Martin Raszyk, Joshua Schneider and Dmitriy Traytel
2020-04-08: Stateful Protocol Composition and Typing
Authors: Andreas V. Hess, Sebastian Mödersheim and Achim D. Brucker
2020-04-08: Automated Stateful Protocol Verification
Authors: Andreas V. Hess, Sebastian Mödersheim, Achim D. Brucker and Anders Schlichtkrull
2020-04-07: Lucas's Theorem
Author: Chelsea Edmonds
2020-03-25: Strong Eventual Consistency of the Collaborative Editing Framework WOOT
Authors: Emin Karayel and Edgar Gonzàlez
2020-03-22: Furstenberg's topology and his proof of the infinitude of primes
Author: Manuel Eberl
2020-03-12: An Under-Approximate Relational Logic
Author: Toby Murray
2020-03-07: Hello World
Authors: Cornelius Diekmann and Lars Hupel
2020-02-21: Implementing the Goodstein Function in λ-Calculus
Author: Bertram Felgenhauer
2020-02-10: A Generic Framework for Verified Compilers
Author: Martin Desharnais
2020-02-01: Arithmetic progressions and relative primes
Author: José Manuel Rodríguez Caballero
2020-01-31: A Hierarchy of Algebras for Boolean Subsets
Authors: Walter Guttmann and Bernhard Möller
2020-01-17: Mersenne primes and the Lucas–Lehmer test
Author: Manuel Eberl
2020-01-16: Verified Approximation Algorithms
Authors: Robin Eßmann, Tobias Nipkow and Simon Robillard
2020-01-13: Closest Pair of Points Algorithms
Authors: Martin Rau and Tobias Nipkow
2020-01-09: Skip Lists
Authors: Max W. Haslbeck and Manuel Eberl
2020-01-06: Bicategories
Author: Eugene W. Stark

 

2019
2019-12-27: The Irrationality of ζ(3)
Author: Manuel Eberl
2019-12-20: Formalizing a Seligman-Style Tableau System for Hybrid Logic
Author: Asta Halkjær From
2019-12-18: The Poincaré-Bendixson Theorem
Authors: Fabian Immler and Yong Kiam Tan
2019-12-16: Poincaré Disc Model
Authors: Danijela Simić, Filip Marić and Pierre Boutry
2019-12-16: Complex Geometry
Authors: Filip Marić and Danijela Simić
2019-12-10: Gauss Sums and the Pólya–Vinogradov Inequality
Authors: Rodrigo Raya and Manuel Eberl
2019-12-04: An Efficient Generalization of Counting Sort for Large, possibly Infinite Key Ranges
Author: Pasquale Noce
2019-11-27: Interval Arithmetic on 32-bit Words
Author: Brandon Bohrer
2019-10-24: Zermelo Fraenkel Set Theory in Higher-Order Logic
Author: Lawrence C. Paulson
2019-10-22: Isabelle/C
Authors: Frédéric Tuong and Burkhart Wolff
2019-10-16: VerifyThis 2019 -- Polished Isabelle Solutions
Authors: Peter Lammich and Simon Wimmer
2019-10-08: Aristotle's Assertoric Syllogistic
Author: Angeliki Koutsoukou-Argyraki
2019-10-07: Sigma Protocols and Commitment Schemes
Authors: David Butler and Andreas Lochbihler
2019-10-04: Clean - An Abstract Imperative Programming Language and its Theory
Authors: Frédéric Tuong and Burkhart Wolff
2019-09-16: Formalization of Multiway-Join Algorithms
Author: Thibault Dardinier
2019-09-10: Verification Components for Hybrid Systems
Author: Jonathan Julian Huerta y Munive
2019-09-06: Fourier Series
Author: Lawrence C Paulson
2019-08-30: A Case Study in Basic Algebra
Author: Clemens Ballarin
2019-08-16: Formalisation of an Adaptive State Counting Algorithm
Author: Robert Sachtleben
2019-08-14: Laplace Transform
Author: Fabian Immler
2019-08-06: Linear Programming
Authors: Julian Parsert and Cezary Kaliszyk
2019-08-06: Communicating Concurrent Kleene Algebra for Distributed Systems Specification
Authors: Maxime Buyse and Jason Jaskolka
2019-08-05: Selected Problems from the International Mathematical Olympiad 2019
Author: Manuel Eberl
2019-08-01: Stellar Quorum Systems
Author: Giuliano Losa
2019-07-30: A Formal Development of a Polychronous Polytimed Coordination Language
Authors: Hai Nguyen Van, Frédéric Boulanger and Burkhart Wolff
2019-07-27: Szpilrajn Extension Theorem
Author: Peter Zeller
2019-07-18: A Sequent Calculus for First-Order Logic
Author: Asta Halkjær From
2019-07-08: A Verified Code Generator from Isabelle/HOL to CakeML
Author: Lars Hupel
2019-07-04: Formalization of a Monitoring Algorithm for Metric First-Order Temporal Logic
Authors: Joshua Schneider and Dmitriy Traytel
2019-06-27: Complete Non-Orders and Fixed Points
Authors: Akihisa Yamada and Jérémy Dubut
2019-06-25: Priority Search Trees
Authors: Peter Lammich and Tobias Nipkow
2019-06-25: Purely Functional, Simple, and Efficient Implementation of Prim and Dijkstra
Authors: Peter Lammich and Tobias Nipkow
2019-06-21: Linear Inequalities
Authors: Ralph Bottesch, Alban Reynaud and René Thiemann
2019-06-16: Hilbert's Nullstellensatz
Author: Alexander Maletzky
2019-06-15: Gröbner Bases, Macaulay Matrices and Dubé's Degree Bounds
Author: Alexander Maletzky
2019-06-13: Binary Heaps for IMP2
Author: Simon Griebel
2019-06-03: Differential Game Logic
Author: André Platzer
2019-05-30: Multidimensional Binary Search Trees
Author: Martin Rau
2019-05-14: Formalization of Generic Authenticated Data Structures
Authors: Matthias Brun and Dmitriy Traytel
2019-05-09: Multi-Party Computation
Authors: David Aspinall and David Butler
2019-04-26: HOL-CSP Version 2.0
Authors: Safouan Taha, Lina Ye and Burkhart Wolff
2019-04-16: A Compositional and Unified Translation of LTL into ω-Automata
Authors: Benedikt Seidl and Salomon Sickert
2019-04-06: A General Theory of Syntax with Bindings
Authors: Lorenzo Gheri and Andrei Popescu
2019-03-27: The Transcendence of Certain Infinite Series
Authors: Angeliki Koutsoukou-Argyraki and Wenda Li
2019-03-24: Quantum Hoare Logic
Authors: Junyi Liu, Bohua Zhan, Shuling Wang, Shenggang Ying, Tao Liu, Yangjia Li, Mingsheng Ying and Naijun Zhan
2019-03-09: Safe OCL
Author: Denis Nikiforov
2019-02-21: Elementary Facts About the Distribution of Primes
Author: Manuel Eberl
2019-02-14: Kruskal's Algorithm for Minimum Spanning Forest
Authors: Maximilian P.L. Haslbeck, Peter Lammich and Julian Biendarra
2019-02-11: Probabilistic Primality Testing
Authors: Daniel Stüwe and Manuel Eberl
2019-02-08: Universal Turing Machine
Authors: Jian Xu, Xingyuan Zhang, Christian Urban and Sebastiaan J. C. Joosten
2019-02-01: Isabelle/UTP: Mechanised Theory Engineering for Unifying Theories of Programming
Authors: Simon Foster, Frank Zeyda, Yakoub Nemouchi, Pedro Ribeiro and Burkhart Wolff
2019-02-01: The Inversions of a List
Author: Manuel Eberl
2019-01-17: Farkas' Lemma and Motzkin's Transposition Theorem
Authors: Ralph Bottesch, Max W. Haslbeck and René Thiemann
2019-01-15: IMP2 – Simple Program Verification in Isabelle/HOL
Authors: Peter Lammich and Simon Wimmer
2019-01-15: An Algebra for Higher-Order Terms
Author: Lars Hupel
2019-01-07: A Reduction Theorem for Store Buffers
Authors: Ernie Cohen and Norbert Schirmer

 

2018
2018-12-26: A Formal Model of the Document Object Model
Authors: Achim D. Brucker and Michael Herzberg
2018-12-25: Formalization of Concurrent Revisions
Author: Roy Overbeek
2018-12-21: Verifying Imperative Programs using Auto2
Author: Bohua Zhan
2018-12-17: Constructive Cryptography in HOL
Authors: Andreas Lochbihler and S. Reza Sefidgar
2018-12-11: Transformer Semantics
Author: Georg Struth
2018-12-11: Quantales
Author: Georg Struth
2018-12-11: Properties of Orderings and Lattices
Author: Georg Struth
2018-11-23: Graph Saturation
Author: Sebastiaan J. C. Joosten
2018-11-23: A Verified Functional Implementation of Bachmair and Ganzinger's Ordered Resolution Prover
Authors: Anders Schlichtkrull, Jasmin Christian Blanchette and Dmitriy Traytel
2018-11-20: Auto2 Prover
Author: Bohua Zhan
2018-11-16: Matroids
Author: Jonas Keinholz
2018-11-06: Deriving generic class instances for datatypes
Authors: Jonas Rädle and Lars Hupel
2018-10-30: Formalisation and Evaluation of Alan Gewirth's Proof for the Principle of Generic Consistency in Isabelle/HOL
Authors: David Fuenmayor and Christoph Benzmüller
2018-10-29: Epistemic Logic
Author: Asta Halkjær From
2018-10-22: Smooth Manifolds
Authors: Fabian Immler and Bohua Zhan
2018-10-19: Randomised Binary Search Trees
Author: Manuel Eberl
2018-10-19: Formalization of the Embedding Path Order for Lambda-Free Higher-Order Terms
Author: Alexander Bentkamp
2018-10-12: Upper Bounding Diameters of State Spaces of Factored Transition Systems
Authors: Friedrich Kurz and Mohammad Abdulaziz
2018-09-28: The Transcendence of π
Author: Manuel Eberl
2018-09-25: Symmetric Polynomials
Author: Manuel Eberl
2018-09-20: Signature-Based Gröbner Basis Algorithms
Author: Alexander Maletzky
2018-09-19: The Prime Number Theorem
Authors: Manuel Eberl and Lawrence C. Paulson
2018-09-15: Aggregation Algebras
Author: Walter Guttmann
2018-09-14: Octonions
Author: Angeliki Koutsoukou-Argyraki
2018-09-05: Quaternions
Author: Lawrence C. Paulson
2018-09-02: The Budan-Fourier Theorem and Counting Real Roots with Multiplicity
Author: Wenda Li
2018-08-24: An Incremental Simplex Algorithm with Unsatisfiable Core Generation
Authors: Filip Marić, Mirko Spasić and René Thiemann
2018-08-14: Minsky Machines
Author: Bertram Felgenhauer
2018-07-16: Pricing in discrete financial models
Author: Mnacho Echenim
2018-07-04: Von-Neumann-Morgenstern Utility Theorem
Authors: Julian Parsert and Cezary Kaliszyk
2018-06-23: Pell's Equation
Author: Manuel Eberl
2018-06-14: Projective Geometry
Author: Anthony Bordg
2018-06-14: The Localization of a Commutative Ring
Author: Anthony Bordg
2018-06-05: Partial Order Reduction
Author: Julian Brunner
2018-05-27: Optimal Binary Search Trees
Authors: Tobias Nipkow and Dániel Somogyi
2018-05-25: Hidden Markov Models
Author: Simon Wimmer
2018-05-24: Probabilistic Timed Automata
Authors: Simon Wimmer and Johannes Hölzl
2018-05-23: Irrational Rapidly Convergent Series
Authors: Angeliki Koutsoukou-Argyraki and Wenda Li
2018-05-23: Axiom Systems for Category Theory in Free Logic
Authors: Christoph Benzmüller and Dana Scott
2018-05-22: Monadification, Memoization and Dynamic Programming
Authors: Simon Wimmer, Shuwei Hu and Tobias Nipkow
2018-05-10: OpSets: Sequential Specifications for Replicated Datatypes
Authors: Martin Kleppmann, Victor B. F. Gomes, Dominic P. Mulligan and Alastair R. Beresford
2018-05-07: An Isabelle/HOL Formalization of the Modular Assembly Kit for Security Properties
Authors: Oliver Bračevac, Richard Gay, Sylvia Grewe, Heiko Mantel, Henning Sudbrock and Markus Tasch
2018-04-29: WebAssembly
Author: Conrad Watt
2018-04-27: VerifyThis 2018 - Polished Isabelle Solutions
Authors: Peter Lammich and Simon Wimmer
2018-04-24: Bounded Natural Functors with Covariance and Contravariance
Authors: Andreas Lochbihler and Joshua Schneider
2018-03-22: The Incompatibility of Fishburn-Strategyproofness and Pareto-Efficiency
Authors: Felix Brandt, Manuel Eberl, Christian Saile and Christian Stricker
2018-03-13: Weight-Balanced Trees
Authors: Tobias Nipkow and Stefan Dirix
2018-03-12: CakeML
Authors: Lars Hupel and Yu Zhang
2018-03-01: A Theory of Architectural Design Patterns
Author: Diego Marmsoler
2018-02-26: Hoare Logics for Time Bounds
Authors: Maximilian P. L. Haslbeck and Tobias Nipkow
2018-02-06: Treaps
Authors: Maximilian Haslbeck, Manuel Eberl and Tobias Nipkow
2018-02-06: A verified factorization algorithm for integer polynomials with polynomial complexity
Authors: Jose Divasón, Sebastiaan Joosten, René Thiemann and Akihisa Yamada
2018-02-06: First-Order Terms
Authors: Christian Sternagel and René Thiemann
2018-02-06: The Error Function
Author: Manuel Eberl
2018-02-02: A verified LLL algorithm
Authors: Ralph Bottesch, Jose Divasón, Maximilian Haslbeck, Sebastiaan Joosten, René Thiemann and Akihisa Yamada
2018-01-18: Formalization of Bachmair and Ganzinger's Ordered Resolution Prover
Authors: Anders Schlichtkrull, Jasmin Christian Blanchette, Dmitriy Traytel and Uwe Waldmann
2018-01-16: Gromov Hyperbolicity
Author: Sebastien Gouezel
2018-01-11: An Isabelle/HOL formalisation of Green's Theorem
Authors: Mohammad Abdulaziz and Lawrence C. Paulson
2018-01-08: Taylor Models
Authors: Christoph Traut and Fabian Immler

 

2017
2017-12-22: The Falling Factorial of a Sum
Author: Lukas Bulwahn
2017-12-21: The Median-of-Medians Selection Algorithm
Author: Manuel Eberl
2017-12-21: The Mason–Stothers Theorem
Author: Manuel Eberl
2017-12-21: Dirichlet L-Functions and Dirichlet's Theorem
Author: Manuel Eberl
2017-12-19: Operations on Bounded Natural Functors
Authors: Jasmin Christian Blanchette, Andrei Popescu and Dmitriy Traytel
2017-12-18: The string search algorithm by Knuth, Morris and Pratt
Authors: Fabian Hellauer and Peter Lammich
2017-11-22: Stochastic Matrices and the Perron-Frobenius Theorem
Author: René Thiemann
2017-11-09: The IMAP CmRDT
Authors: Tim Jungnickel, Lennart Oldenburg and Matthias Loibl
2017-11-06: Hybrid Multi-Lane Spatial Logic
Author: Sven Linker
2017-10-26: The Kuratowski Closure-Complement Theorem
Authors: Peter Gammie and Gianpaolo Gioiosa
2017-10-19: Transition Systems and Automata
Author: Julian Brunner
2017-10-19: Büchi Complementation
Author: Julian Brunner
2017-10-17: Evaluate Winding Numbers through Cauchy Indices
Author: Wenda Li
2017-10-17: Count the Number of Complex Roots
Author: Wenda Li
2017-10-14: Homogeneous Linear Diophantine Equations
Authors: Florian Messner, Julian Parsert, Jonas Schöpf and Christian Sternagel
2017-10-12: The Hurwitz and Riemann ζ Functions
Author: Manuel Eberl
2017-10-12: Linear Recurrences
Author: Manuel Eberl
2017-10-12: Dirichlet Series
Author: Manuel Eberl
2017-09-21: Computer-assisted Reconstruction and Assessment of E. J. Lowe's Modal Ontological Argument
Authors: David Fuenmayor and Christoph Benzmüller
2017-09-17: Representation and Partial Automation of the Principia Logico-Metaphysica in Isabelle/HOL
Author: Daniel Kirchner
2017-09-06: Anselm's God in Isabelle/HOL
Author: Ben Blumson
2017-09-01: Microeconomics and the First Welfare Theorem
Authors: Julian Parsert and Cezary Kaliszyk
2017-08-20: Root-Balanced Tree
Author: Tobias Nipkow
2017-08-20: Orbit-Stabiliser Theorem with Application to Rotational Symmetries
Author: Jonas Rädle
2017-08-16: The LambdaMu-calculus
Authors: Cristina Matache, Victor B. F. Gomes and Dominic P. Mulligan
2017-07-31: Stewart's Theorem and Apollonius' Theorem
Author: Lukas Bulwahn
2017-07-28: Dynamic Architectures
Author: Diego Marmsoler
2017-07-21: Declarative Semantics for Functional Languages
Author: Jeremy Siek
2017-07-15: HOLCF-Prelude
Authors: Joachim Breitner, Brian Huffman, Neil Mitchell and Christian Sternagel
2017-07-13: Minkowski's Theorem
Author: Manuel Eberl
2017-07-09: Verified Metatheory and Type Inference for a Name-Carrying Simply-Typed Lambda Calculus
Author: Michael Rawson
2017-07-07: A framework for establishing Strong Eventual Consistency for Conflict-free Replicated Datatypes
Authors: Victor B. F. Gomes, Martin Kleppmann, Dominic P. Mulligan and Alastair R. Beresford
2017-07-06: Stone-Kleene Relation Algebras
Author: Walter Guttmann
2017-06-21: Propositional Proof Systems
Authors: Julius Michaelis and Tobias Nipkow
2017-06-13: Partial Semigroups and Convolution Algebras
Authors: Brijesh Dongol, Victor B. F. Gomes, Ian J. Hayes and Georg Struth
2017-06-06: Buffon's Needle Problem
Author: Manuel Eberl
2017-06-01: Formalizing Push-Relabel Algorithms
Authors: Peter Lammich and S. Reza Sefidgar
2017-06-01: Flow Networks and the Min-Cut-Max-Flow Theorem
Authors: Peter Lammich and S. Reza Sefidgar
2017-05-25: Optics
Authors: Simon Foster and Frank Zeyda
2017-05-24: Developing Security Protocols by Refinement
Authors: Christoph Sprenger and Ivano Somaini
2017-05-24: Dictionary Construction
Author: Lars Hupel
2017-05-08: The Floyd-Warshall Algorithm for Shortest Paths
Authors: Simon Wimmer and Peter Lammich
2017-05-05: Probabilistic while loop
Author: Andreas Lochbihler
2017-05-05: Effect polymorphism in higher-order logic
Author: Andreas Lochbihler
2017-05-05: Monad normalisation
Authors: Joshua Schneider, Manuel Eberl and Andreas Lochbihler
2017-05-05: Game-based cryptography in HOL
Authors: Andreas Lochbihler, S. Reza Sefidgar and Bhargav Bhatt
2017-05-05: CryptHOL
Author: Andreas Lochbihler
2017-05-04: Monoidal Categories
Author: Eugene W. Stark
2017-05-01: Types, Tableaus and Gödel’s God in Isabelle/HOL
Authors: David Fuenmayor and Christoph Benzmüller
2017-04-28: Local Lexing
Author: Steven Obua
2017-04-19: Constructor Functions
Author: Lars Hupel
2017-04-18: Lazifying case constants
Author: Lars Hupel
2017-04-06: Subresultants
Authors: Sebastiaan Joosten, René Thiemann and Akihisa Yamada
2017-04-04: Expected Shape of Random Binary Search Trees
Author: Manuel Eberl
2017-03-15: The number of comparisons in QuickSort
Author: Manuel Eberl
2017-03-15: Lower bound on comparison-based sorting algorithms
Author: Manuel Eberl
2017-03-10: The Euler–MacLaurin Formula
Author: Manuel Eberl
2017-02-28: The Group Law for Elliptic Curves
Author: Stefan Berghofer
2017-02-26: Menger's Theorem
Author: Christoph Dittmann
2017-02-13: Differential Dynamic Logic
Author: Brandon Bohrer
2017-02-10: Abstract Soundness
Authors: Jasmin Christian Blanchette, Andrei Popescu and Dmitriy Traytel
2017-02-07: Stone Relation Algebras
Author: Walter Guttmann
2017-01-31: Refining Authenticated Key Agreement with Strong Adversaries
Authors: Joseph Lallemand and Christoph Sprenger
2017-01-24: Bernoulli Numbers
Authors: Lukas Bulwahn and Manuel Eberl
2017-01-17: Minimal Static Single Assignment Form
Authors: Max Wagner and Denis Lohner
2017-01-17: Bertrand's postulate
Authors: Julian Biendarra and Manuel Eberl
2017-01-12: The Transcendence of e
Author: Manuel Eberl
2017-01-08: Formal Network Models and Their Application to Firewall Policies
Authors: Achim D. Brucker, Lukas Brügger and Burkhart Wolff
2017-01-03: Verification of a Diffie-Hellman Password-based Authentication Protocol by Extending the Inductive Method
Author: Pasquale Noce
2017-01-01: First-Order Logic According to Harrison
Authors: Alexander Birch Jensen, Anders Schlichtkrull and Jørgen Villadsen

 

2016
2016-12-30: Concurrent Refinement Algebra and Rely Quotients
Authors: Julian Fell, Ian J. Hayes and Andrius Velykis
2016-12-29: The Twelvefold Way
Author: Lukas Bulwahn
2016-12-20: Proof Strategy Language
Author: Yutaka Nagashima
2016-12-07: Paraconsistency
Authors: Anders Schlichtkrull and Jørgen Villadsen
2016-11-29: COMPLX: A Verification Framework for Concurrent Imperative Programs
Authors: Sidney Amani, June Andronick, Maksym Bortin, Corey Lewis, Christine Rizkallah and Joseph Tuong
2016-11-23: Abstract Interpretation of Annotated Commands
Author: Tobias Nipkow
2016-11-16: Separata: Isabelle tactics for Separation Algebra
Authors: Zhe Hou, David Sanan, Alwen Tiu, Rajeev Gore and Ranald Clouston
2016-11-12: Formalization of Nested Multisets, Hereditary Multisets, and Syntactic Ordinals
Authors: Jasmin Christian Blanchette, Mathias Fleury and Dmitriy Traytel
2016-11-12: Formalization of Knuth–Bendix Orders for Lambda-Free Higher-Order Terms
Authors: Heiko Becker, Jasmin Christian Blanchette, Uwe Waldmann and Daniel Wand
2016-11-10: Expressiveness of Deep Learning
Author: Alexander Bentkamp
2016-10-25: Modal Logics for Nominal Transition Systems
Authors: Tjark Weber, Lars-Henrik Eriksson, Joachim Parrow, Johannes Borgström and Ramunas Gutkovas
2016-10-24: Stable Matching
Author: Peter Gammie
2016-10-21: LOFT — Verified Migration of Linux Firewalls to SDN
Authors: Julius Michaelis and Cornelius Diekmann
2016-10-19: Source Coding Theorem
Authors: Quentin Hibon and Lawrence C. Paulson
2016-10-19: A formal model for the SPARCv8 ISA and a proof of non-interference for the LEON3 processor
Authors: Zhe Hou, David Sanan, Alwen Tiu and Yang Liu
2016-10-14: The Factorization Algorithm of Berlekamp and Zassenhaus
Authors: Jose Divasón, Sebastiaan Joosten, René Thiemann and Akihisa Yamada
2016-10-11: Intersecting Chords Theorem
Author: Lukas Bulwahn
2016-10-05: Lp spaces
Author: Sebastien Gouezel
2016-09-30: Fisher–Yates shuffle
Author: Manuel Eberl
2016-09-29: Allen's Interval Calculus
Author: Fadoua Ghourabi
2016-09-23: Formalization of Recursive Path Orders for Lambda-Free Higher-Order Terms
Authors: Jasmin Christian Blanchette, Uwe Waldmann and Daniel Wand
2016-09-09: Iptables Semantics
Authors: Cornelius Diekmann and Lars Hupel
2016-09-06: A Variant of the Superposition Calculus
Author: Nicolas Peltier
2016-09-06: Stone Algebras
Author: Walter Guttmann
2016-09-01: Stirling's formula
Author: Manuel Eberl
2016-08-31: Routing
Authors: Julius Michaelis and Cornelius Diekmann
2016-08-24: Simple Firewall
Authors: Cornelius Diekmann, Julius Michaelis and Maximilian Haslbeck
2016-08-18: Infeasible Paths Elimination by Symbolic Execution Techniques: Proof of Correctness and Preservation of Paths
Authors: Romain Aissat, Frederic Voisin and Burkhart Wolff
2016-08-12: Formalizing the Edmonds-Karp Algorithm
Authors: Peter Lammich and S. Reza Sefidgar
2016-08-08: The Imperative Refinement Framework
Author: Peter Lammich
2016-08-07: Ptolemy's Theorem
Author: Lukas Bulwahn
2016-07-17: Surprise Paradox
Author: Joachim Breitner
2016-07-14: Pairing Heap
Authors: Hauke Brinkop and Tobias Nipkow
2016-07-05: A Framework for Verifying Depth-First Search Algorithms
Authors: Peter Lammich and René Neumann
2016-07-01: Chamber Complexes, Coxeter Systems, and Buildings
Author: Jeremy Sylvestre
2016-06-30: The Z Property
Authors: Bertram Felgenhauer, Julian Nagele, Vincent van Oostrom and Christian Sternagel
2016-06-30: The Resolution Calculus for First-Order Logic
Author: Anders Schlichtkrull
2016-06-28: IP Addresses
Authors: Cornelius Diekmann, Julius Michaelis and Lars Hupel
2016-06-28: Compositional Security-Preserving Refinement for Concurrent Imperative Programs
Authors: Toby Murray, Robert Sison, Edward Pierzchalski and Christine Rizkallah
2016-06-26: Category Theory with Adjunctions and Limits
Author: Eugene W. Stark
2016-06-26: Cardinality of Multisets
Author: Lukas Bulwahn
2016-06-25: A Dependent Security Type System for Concurrent Imperative Programs
Authors: Toby Murray, Robert Sison, Edward Pierzchalski and Christine Rizkallah
2016-06-21: Catalan Numbers
Author: Manuel Eberl
2016-06-18: Program Construction and Verification Components Based on Kleene Algebra
Authors: Victor B. F. Gomes and Georg Struth
2016-06-13: Conservation of CSP Noninterference Security under Concurrent Composition
Author: Pasquale Noce
2016-06-09: Finite Machine Word Library
Authors: Joel Beeren, Matthew Fernandez, Xin Gao, Gerwin Klein, Rafal Kolanski, Japheth Lim, Corey Lewis, Daniel Matichuk and Thomas Sewell
2016-05-31: Tree Decomposition
Author: Christoph Dittmann
2016-05-24: POSIX Lexing with Derivatives of Regular Expressions
Authors: Fahad Ausaf, Roy Dyckhoff and Christian Urban
2016-05-24: Cardinality of Equivalence Relations
Author: Lukas Bulwahn
2016-05-20: Perron-Frobenius Theorem for Spectral Radius Analysis
Authors: Jose Divasón, Ondřej Kunčar, René Thiemann and Akihisa Yamada
2016-05-20: The meta theory of the Incredible Proof Machine
Authors: Joachim Breitner and Denis Lohner
2016-05-18: A Constructive Proof for FLP
Authors: Benjamin Bisping, Paul-David Brodmann, Tim Jungnickel, Christina Rickmann, Henning Seidler, Anke Stüber, Arno Wilhelm-Weidner, Kirstin Peters and Uwe Nestmann
2016-05-09: A Formal Proof of the Max-Flow Min-Cut Theorem for Countable Networks
Author: Andreas Lochbihler
2016-05-05: Randomised Social Choice Theory
Author: Manuel Eberl
2016-05-04: The Incompatibility of SD-Efficiency and SD-Strategy-Proofness
Author: Manuel Eberl
2016-05-04: Spivey's Generalized Recurrence for Bell Numbers
Author: Lukas Bulwahn
2016-05-02: Gröbner Bases Theory
Authors: Fabian Immler and Alexander Maletzky
2016-04-28: No Faster-Than-Light Observers
Authors: Mike Stannett and István Németi
2016-04-27: Algorithms for Reduced Ordered Binary Decision Diagrams
Authors: Julius Michaelis, Maximilian Haslbeck, Peter Lammich and Lars Hupel
2016-04-27: A formalisation of the Cocke-Younger-Kasami algorithm
Author: Maksym Bortin
2016-04-26: Conservation of CSP Noninterference Security under Sequential Composition
Author: Pasquale Noce
2016-04-12: Kleene Algebras with Domain
Authors: Victor B. F. Gomes, Walter Guttmann, Peter Höfner, Georg Struth and Tjark Weber
2016-03-11: Propositional Resolution and Prime Implicates Generation
Author: Nicolas Peltier
2016-03-08: Timed Automata
Author: Simon Wimmer
2016-03-08: The Cartan Fixed Point Theorems
Author: Lawrence C. Paulson
2016-03-01: Linear Temporal Logic
Author: Salomon Sickert
2016-02-17: Analysis of List Update Algorithms
Authors: Maximilian P.L. Haslbeck and Tobias Nipkow
2016-02-05: Verified Construction of Static Single Assignment Form
Authors: Sebastian Ullrich and Denis Lohner
2016-01-29: Polynomial Interpolation
Authors: René Thiemann and Akihisa Yamada
2016-01-29: Polynomial Factorization
Authors: René Thiemann and Akihisa Yamada
2016-01-20: Knot Theory
Author: T.V.H. Prathamesh
2016-01-18: Tensor Product of Matrices
Author: T.V.H. Prathamesh
2016-01-14: Cardinality of Number Partitions
Author: Lukas Bulwahn

 

2015
2015-12-28: Basic Geometric Properties of Triangles
Author: Manuel Eberl
2015-12-28: The Divergence of the Prime Harmonic Series
Author: Manuel Eberl
2015-12-28: Liouville numbers
Author: Manuel Eberl
2015-12-28: Descartes' Rule of Signs
Author: Manuel Eberl
2015-12-22: The Stern-Brocot Tree
Authors: Peter Gammie and Andreas Lochbihler
2015-12-22: Applicative Lifting
Authors: Andreas Lochbihler and Joshua Schneider
2015-12-22: Algebraic Numbers in Isabelle/HOL
Authors: René Thiemann, Akihisa Yamada and Sebastiaan Joosten
2015-12-12: Cardinality of Set Partitions
Author: Lukas Bulwahn
2015-12-02: Latin Square
Author: Alexander Bentkamp
2015-12-01: Ergodic Theory
Author: Sebastien Gouezel
2015-11-19: Euler's Partition Theorem
Author: Lukas Bulwahn
2015-11-18: The Tortoise and Hare Algorithm
Author: Peter Gammie
2015-11-11: Planarity Certificates
Author: Lars Noschinski
2015-11-02: Positional Determinacy of Parity Games
Author: Christoph Dittmann
2015-09-16: A Meta-Model for the Isabelle API
Authors: Frédéric Tuong and Burkhart Wolff
2015-09-04: Converting Linear Temporal Logic to Deterministic (Generalized) Rabin Automata
Author: Salomon Sickert
2015-08-21: Matrices, Jordan Normal Forms, and Spectral Radius Theory
Authors: René Thiemann and Akihisa Yamada
2015-08-20: Decreasing Diagrams II
Author: Bertram Felgenhauer
2015-08-18: The Inductive Unwinding Theorem for CSP Noninterference Security
Author: Pasquale Noce
2015-08-12: Representations of Finite Groups
Author: Jeremy Sylvestre
2015-08-10: Analysing and Comparing Encodability Criteria for Process Calculi
Authors: Kirstin Peters and Rob van Glabbeek
2015-07-21: Generating Cases from Labeled Subgoals
Author: Lars Noschinski
2015-07-14: Landau Symbols
Author: Manuel Eberl
2015-07-14: The Akra-Bazzi theorem and the Master theorem
Author: Manuel Eberl
2015-07-07: Hermite Normal Form
Authors: Jose Divasón and Jesús Aransay
2015-06-27: Derangements Formula
Author: Lukas Bulwahn
2015-06-11: The Ipurge Unwinding Theorem for CSP Noninterference Security
Author: Pasquale Noce
2015-06-11: The Generic Unwinding Theorem for CSP Noninterference Security
Author: Pasquale Noce
2015-06-11: Binary Multirelations
Authors: Hitoshi Furusawa and Georg Struth
2015-06-11: Reasoning about Lists via List Interleaving
Author: Pasquale Noce
2015-06-07: Parameterized Dynamic Tables
Author: Tobias Nipkow
2015-05-28: Derivatives of Logical Formulas
Author: Dmitriy Traytel
2015-05-27: A Zoo of Probabilistic Systems
Authors: Johannes Hölzl, Andreas Lochbihler and Dmitriy Traytel
2015-04-30: VCG - Combinatorial Vickrey-Clarke-Groves Auctions
Authors: Marco B. Caminati, Manfred Kerber, Christoph Lange and Colin Rowat
2015-04-15: Residuated Lattices
Authors: Victor B. F. Gomes and Georg Struth
2015-04-13: Concurrent IMP
Author: Peter Gammie
2015-04-13: Relaxing Safely: Verified On-the-Fly Garbage Collection for x86-TSO
Authors: Peter Gammie, Tony Hosking and Kai Engelhardt
2015-03-30: Trie
Authors: Andreas Lochbihler and Tobias Nipkow
2015-03-18: Consensus Refined
Authors: Ognjen Maric and Christoph Sprenger
2015-03-11: Deriving class instances for datatypes
Authors: Christian Sternagel and René Thiemann
2015-02-20: The Safety of Call Arity
Author: Joachim Breitner
2015-02-12: QR Decomposition
Authors: Jose Divasón and Jesús Aransay
2015-02-12: Echelon Form
Authors: Jose Divasón and Jesús Aransay
2015-02-05: Finite Automata in Hereditarily Finite Set Theory
Author: Lawrence C. Paulson
2015-01-28: Verification of the UpDown Scheme
Author: Johannes Hölzl

 

2014
2014-11-28: The Unified Policy Framework (UPF)
Authors: Achim D. Brucker, Lukas Brügger and Burkhart Wolff
2014-10-23: Loop freedom of the (untimed) AODV routing protocol
Authors: Timothy Bourke and Peter Höfner
2014-10-13: Lifting Definition Option
Author: René Thiemann
2014-10-10: Stream Fusion in HOL with Code Generation
Authors: Andreas Lochbihler and Alexandra Maximova
2014-10-09: A Verified Compiler for Probability Density Functions
Authors: Manuel Eberl, Johannes Hölzl and Tobias Nipkow
2014-10-08: Formalization of Refinement Calculus for Reactive Systems
Author: Viorel Preoteasa
2014-10-03: XML
Authors: Christian Sternagel and René Thiemann
2014-10-03: Certification Monads
Authors: Christian Sternagel and René Thiemann
2014-09-25: Imperative Insertion Sort
Author: Christian Sternagel
2014-09-19: The Sturm-Tarski Theorem
Author: Wenda Li
2014-09-15: The Cayley-Hamilton Theorem
Authors: Stephan Adelsberger, Stefan Hetzl and Florian Pollak
2014-09-09: The Jordan-Hölder Theorem
Author: Jakob von Raumer
2014-09-04: Priority Queues Based on Braun Trees
Author: Tobias Nipkow
2014-09-03: Gauss-Jordan Algorithm and Its Applications
Authors: Jose Divasón and Jesús Aransay
2014-08-29: Vector Spaces
Author: Holden Lee
2014-08-29: Real-Valued Special Functions: Upper and Lower Bounds
Author: Lawrence C. Paulson
2014-08-13: Skew Heap
Author: Tobias Nipkow
2014-08-12: Splay Tree
Author: Tobias Nipkow
2014-07-29: Haskell's Show Class in Isabelle/HOL
Authors: Christian Sternagel and René Thiemann
2014-07-18: Formal Specification of a Generic Separation Kernel
Authors: Freek Verbeek, Sergey Tverdyshev, Oto Havle, Holger Blasum, Bruno Langenstein, Werner Stephan, Yakoub Nemouchi, Abderrahmane Feliachi, Burkhart Wolff and Julien Schmaltz
2014-07-13: pGCL for Isabelle
Author: David Cock
2014-07-07: Amortized Complexity Verified
Author: Tobias Nipkow
2014-07-04: Network Security Policy Verification
Author: Cornelius Diekmann
2014-07-03: Pop-Refinement
Author: Alessandro Coglio
2014-06-12: Decision Procedures for MSO on Words Based on Derivatives of Regular Expressions
Authors: Dmitriy Traytel and Tobias Nipkow
2014-06-08: Boolean Expression Checkers
Author: Tobias Nipkow
2014-05-28: Promela Formalization
Author: René Neumann
2014-05-28: Converting Linear-Time Temporal Logic to Generalized Büchi Automata
Authors: Alexander Schimpf and Peter Lammich
2014-05-28: Verified Efficient Implementation of Gabow's Strongly Connected Components Algorithm
Author: Peter Lammich
2014-05-28: A Fully Verified Executable LTL Model Checker
Authors: Javier Esparza, Peter Lammich, René Neumann, Tobias Nipkow, Alexander Schimpf and Jan-Georg Smaus
2014-05-28: The CAVA Automata Library
Author: Peter Lammich
2014-05-23: Transitive closure according to Roy-Floyd-Warshall
Author: Makarius Wenzel
2014-05-23: Noninterference Security in Communicating Sequential Processes
Author: Pasquale Noce
2014-05-21: Regular Algebras
Authors: Simon Foster and Georg Struth
2014-04-28: Formalisation and Analysis of Component Dependencies
Author: Maria Spichkova
2014-04-23: A Formalization of Declassification with WHAT-and-WHERE-Security
Authors: Sylvia Grewe, Alexander Lux, Heiko Mantel and Jens Sauer
2014-04-23: A Formalization of Strong Security
Authors: Sylvia Grewe, Alexander Lux, Heiko Mantel and Jens Sauer
2014-04-23: A Formalization of Assumptions and Guarantees for Compositional Noninterference
Authors: Sylvia Grewe, Heiko Mantel and Daniel Schoepe
2014-04-22: Bounded-Deducibility Security
Authors: Andrei Popescu and Peter Lammich
2014-04-16: A shallow embedding of HyperCTL*
Authors: Markus N. Rabe, Peter Lammich and Andrei Popescu
2014-04-16: Abstract Completeness
Authors: Jasmin Christian Blanchette, Andrei Popescu and Dmitriy Traytel
2014-04-13: Discrete Summation
Author: Florian Haftmann
2014-04-03: Syntax and semantics of a GPU kernel programming language
Author: John Wickerson
2014-03-11: Probabilistic Noninterference
Authors: Andrei Popescu and Johannes Hölzl
2014-03-08: Mechanization of the Algebra for Wireless Networks (AWN)
Author: Timothy Bourke
2014-02-18: Mutually Recursive Partial Functions
Author: René Thiemann
2014-02-13: Properties of Random Graphs -- Subgraph Containment
Author: Lars Hupel
2014-02-11: Verification of Selection and Heap Sort Using Locales
Author: Danijela Petrovic
2014-02-07: Affine Arithmetic
Author: Fabian Immler
2014-02-06: Implementing field extensions of the form Q[sqrt(b)]
Author: René Thiemann
2014-01-30: Unified Decision Procedures for Regular Expression Equivalence
Authors: Tobias Nipkow and Dmitriy Traytel
2014-01-28: Secondary Sylow Theorems
Author: Jakob von Raumer
2014-01-25: Relation Algebra
Authors: Alasdair Armstrong, Simon Foster, Georg Struth and Tjark Weber
2014-01-23: Kleene Algebra with Tests and Demonic Refinement Algebras
Authors: Alasdair Armstrong, Victor B. F. Gomes and Georg Struth
2014-01-16: Featherweight OCL: A Proposal for a Machine-Checked Formal Semantics for OCL 2.5
Authors: Achim D. Brucker, Frédéric Tuong and Burkhart Wolff
2014-01-11: Sturm's Theorem
Author: Manuel Eberl
2014-01-11: Compositional Properties of Crypto-Based Components
Author: Maria Spichkova

 

2013
2013-12-01: A General Method for the Proof of Theorems on Tail-recursive Functions
Author: Pasquale Noce
2013-11-17: Gödel's Incompleteness Theorems
Author: Lawrence C. Paulson
2013-11-17: The Hereditarily Finite Sets
Author: Lawrence C. Paulson
2013-11-15: A Codatatype of Formal Languages
Author: Dmitriy Traytel
2013-11-14: Stream Processing Components: Isabelle/HOL Formalisation and Case Studies
Author: Maria Spichkova
2013-11-12: Gödel's God in Isabelle/HOL
Authors: Christoph Benzmüller and Bruno Woltzenlogel Paleo
2013-11-01: Decreasing Diagrams
Author: Harald Zankl
2013-10-02: Automatic Data Refinement
Author: Peter Lammich
2013-09-17: Native Word
Author: Andreas Lochbihler
2013-07-27: A Formal Model of IEEE Floating Point Arithmetic
Author: Lei Yu
2013-07-22: Pratt's Primality Certificates
Authors: Simon Wimmer and Lars Noschinski
2013-07-22: Lehmer's Theorem
Authors: Simon Wimmer and Lars Noschinski
2013-07-19: The Königsberg Bridge Problem and the Friendship Theorem
Author: Wenda Li
2013-06-27: Sound and Complete Sort Encodings for First-Order Logic
Authors: Jasmin Christian Blanchette and Andrei Popescu
2013-05-22: An Axiomatic Characterization of the Single-Source Shortest Path Problem
Author: Christine Rizkallah
2013-04-28: Graph Theory
Author: Lars Noschinski
2013-04-15: Light-weight Containers
Author: Andreas Lochbihler
2013-02-21: Nominal 2
Authors: Christian Urban, Stefan Berghofer and Cezary Kaliszyk
2013-01-31: The Correctness of Launchbury's Natural Semantics for Lazy Evaluation
Author: Joachim Breitner
2013-01-19: Ribbon Proofs
Author: John Wickerson
2013-01-16: Rank-Nullity Theorem in Linear Algebra
Authors: Jose Divasón and Jesús Aransay
2013-01-15: Kleene Algebra
Authors: Alasdair Armstrong, Georg Struth and Tjark Weber
2013-01-03: Computing N-th Roots using the Babylonian Method
Author: René Thiemann

 

2012
2012-11-14: A Separation Logic Framework for Imperative HOL
Authors: Peter Lammich and Rene Meis
2012-11-02: Open Induction
Authors: Mizuhito Ogawa and Christian Sternagel
2012-10-30: The independence of Tarski's Euclidean axiom
Author: T. J. M. Makarios
2012-10-27: Bondy's Theorem
Authors: Jeremy Avigad and Stefan Hetzl
2012-09-10: Possibilistic Noninterference
Authors: Andrei Popescu and Johannes Hölzl
2012-08-07: Generating linear orders for datatypes
Author: René Thiemann
2012-08-05: Proving the Impossibility of Trisecting an Angle and Doubling the Cube
Authors: Ralph Romanos and Lawrence C. Paulson
2012-07-27: Verifying Fault-Tolerant Distributed Algorithms in the Heard-Of Model
Authors: Henri Debrat and Stephan Merz
2012-07-01: Logical Relations for PCF
Author: Peter Gammie
2012-06-26: Type Constructor Classes and Monad Transformers
Author: Brian Huffman
2012-05-29: Psi-calculi in Isabelle
Author: Jesper Bengtson
2012-05-29: The pi-calculus in nominal logic
Author: Jesper Bengtson
2012-05-29: CCS in nominal logic
Author: Jesper Bengtson
2012-05-27: Isabelle/Circus
Authors: Abderrahmane Feliachi, Burkhart Wolff and Marie-Claude Gaudel
2012-05-11: Separation Algebra
Authors: Gerwin Klein, Rafal Kolanski and Andrew Boyton
2012-05-07: Stuttering Equivalence
Author: Stephan Merz
2012-05-02: Inductive Study of Confidentiality
Author: Giampaolo Bella
2012-04-26: Ordinary Differential Equations
Authors: Fabian Immler and Johannes Hölzl
2012-04-13: Well-Quasi-Orders
Author: Christian Sternagel
2012-03-01: Abortable Linearizable Modules
Authors: Rachid Guerraoui, Viktor Kuncak and Giuliano Losa
2012-02-29: Executable Transitive Closures
Author: René Thiemann
2012-02-06: A Probabilistic Proof of the Girth-Chromatic Number Theorem
Author: Lars Noschinski
2012-01-30: Refinement for Monadic Programs
Author: Peter Lammich
2012-01-30: Dijkstra's Shortest Path Algorithm
Authors: Benedikt Nordhoff and Peter Lammich
2012-01-03: Markov Models
Authors: Johannes Hölzl and Tobias Nipkow

 

2011
2011-11-19: A Definitional Encoding of TLA* in Isabelle/HOL
Authors: Gudmund Grov and Stephan Merz
2011-11-09: Efficient Mergesort
Author: Christian Sternagel
2011-09-22: Pseudo Hoops
Authors: George Georgescu, Laurentiu Leustean and Viorel Preoteasa
2011-09-22: Algebra of Monotonic Boolean Transformers
Author: Viorel Preoteasa
2011-09-22: Lattice Properties
Author: Viorel Preoteasa
2011-08-26: The Myhill-Nerode Theorem Based on Regular Expressions
Authors: Chunhan Wu, Xingyuan Zhang and Christian Urban
2011-08-19: Gauss-Jordan Elimination for Matrices Represented as Functions
Author: Tobias Nipkow
2011-07-21: Maximum Cardinality Matching
Author: Christine Rizkallah
2011-05-17: Knowledge-based programs
Author: Peter Gammie
2011-04-01: The General Triangle Is Unique
Author: Joachim Breitner
2011-03-14: Executable Transitive Closures of Finite Relations
Authors: Christian Sternagel and René Thiemann
2011-02-23: Interval Temporal Logic on Natural Numbers
Author: David Trachtenherz
2011-02-23: Infinite Lists
Author: David Trachtenherz
2011-02-23: AutoFocus Stream Processing for Single-Clocking and Multi-Clocking Semantics
Author: David Trachtenherz
2011-02-07: Lightweight Java
Authors: Rok Strniša and Matthew Parkinson
2011-01-10: RIPEMD-160
Author: Fabian Immler
2011-01-08: Lower Semicontinuous Functions
Author: Bogdan Grechuk

 

2010
2010-12-17: Hall's Marriage Theorem
Authors: Dongchen Jiang and Tobias Nipkow
2010-11-16: Shivers' Control Flow Analysis
Author: Joachim Breitner
2010-10-28: Finger Trees
Authors: Benedikt Nordhoff, Stefan Körner and Peter Lammich
2010-10-28: Functional Binomial Queues
Author: René Neumann
2010-10-28: Binomial Heaps and Skew Binomial Heaps
Authors: Rene Meis, Finn Nielsen and Peter Lammich
2010-08-29: Strong Normalization of Moggis's Computational Metalanguage
Author: Christian Doczkal
2010-08-10: Executable Multivariate Polynomials
Authors: Christian Sternagel, René Thiemann, Alexander Maletzky, Fabian Immler, Florian Haftmann, Andreas Lochbihler and Alexander Bentkamp
2010-08-08: Formalizing Statecharts using Hierarchical Automata
Authors: Steffen Helke and Florian Kammüller
2010-06-24: Free Groups
Author: Joachim Breitner
2010-06-20: Category Theory
Author: Alexander Katovsky
2010-06-17: Executable Matrix Operations on Matrices of Arbitrary Dimensions
Authors: Christian Sternagel and René Thiemann
2010-06-14: Abstract Rewriting
Authors: Christian Sternagel and René Thiemann
2010-05-28: Verification of the Deutsch-Schorr-Waite Graph Marking Algorithm using Data Refinement
Authors: Viorel Preoteasa and Ralph-Johan Back
2010-05-28: Semantics and Data Refinement of Invariant Based Programs
Authors: Viorel Preoteasa and Ralph-Johan Back
2010-05-22: A Complete Proof of the Robbins Conjecture
Author: Matthew Wampler-Doty
2010-05-12: Regular Sets and Expressions
Authors: Alexander Krauss and Tobias Nipkow
2010-04-30: Locally Nameless Sigma Calculus
Authors: Ludovic Henrio, Florian Kammüller, Bianca Lutz and Henry Sudhof
2010-03-29: Free Boolean Algebra
Author: Brian Huffman
2010-03-23: Inter-Procedural Information Flow Noninterference via Slicing
Author: Daniel Wasserrab
2010-03-23: Information Flow Noninterference via Slicing
Author: Daniel Wasserrab
2010-02-20: List Index
Author: Tobias Nipkow
2010-02-12: Coinductive
Author: Andreas Lochbihler

 

2009
2009-12-09: A Fast SAT Solver for Isabelle in Standard ML
Author: Armin Heller
2009-12-03: Formalizing the Logic-Automaton Connection
Authors: Stefan Berghofer and Markus Reiter
2009-11-25: Tree Automata
Author: Peter Lammich
2009-11-25: Collections Framework
Author: Peter Lammich
2009-11-22: Perfect Number Theorem
Author: Mark Ijbema
2009-11-13: Backing up Slicing: Verifying the Interprocedural Two-Phase Horwitz-Reps-Binkley Slicer
Author: Daniel Wasserrab
2009-10-30: The Worker/Wrapper Transformation
Author: Peter Gammie
2009-09-01: Ordinals and Cardinals
Author: Andrei Popescu
2009-08-28: Invertibility in Sequent Calculi
Author: Peter Chapman
2009-08-04: An Example of a Cofinitary Group in Isabelle/HOL
Author: Bart Kastermans
2009-05-06: Code Generation for Functions as Data
Author: Andreas Lochbihler
2009-04-29: Stream Fusion
Author: Brian Huffman

 

2008
2008-12-12: A Bytecode Logic for JML and Types
Authors: Lennart Beringer and Martin Hofmann
2008-11-10: Secure information flow and program logics
Authors: Lennart Beringer and Martin Hofmann
2008-11-09: Some classical results in Social Choice Theory
Author: Peter Gammie
2008-11-07: Fun With Tilings
Authors: Tobias Nipkow and Lawrence C. Paulson
2008-10-15: The Textbook Proof of Huffman's Algorithm
Author: Jasmin Christian Blanchette
2008-09-16: Towards Certified Slicing
Author: Daniel Wasserrab
2008-09-02: A Correctness Proof for the Volpano/Smith Security Typing System
Authors: Gregor Snelting and Daniel Wasserrab
2008-09-01: Arrow and Gibbard-Satterthwaite
Author: Tobias Nipkow
2008-08-26: Fun With Functions
Author: Tobias Nipkow
2008-07-23: Formal Verification of Modern SAT Solvers
Author: Filip Marić
2008-04-05: Recursion Theory I
Author: Michael Nedzelsky
2008-02-29: A Sequential Imperative Programming Language Syntax, Semantics, Hoare Logics and Verification Environment
Author: Norbert Schirmer
2008-02-29: BDD Normalisation
Authors: Veronika Ortner and Norbert Schirmer
2008-02-18: Normalization by Evaluation
Authors: Klaus Aehlig and Tobias Nipkow
2008-01-11: Quantifier Elimination for Linear Arithmetic
Author: Tobias Nipkow

 

2007
2007-12-14: Formalization of Conflict Analysis of Programs with Procedures, Thread Creation, and Monitors
Authors: Peter Lammich and Markus Müller-Olm
2007-12-03: Jinja with Threads
Author: Andreas Lochbihler
2007-11-06: Much Ado About Two
Author: Sascha Böhme
2007-08-12: Sums of Two and Four Squares
Author: Roelof Oosterhuis
2007-08-12: Fermat's Last Theorem for Exponents 3 and 4 and the Parametrisation of Pythagorean Triples
Author: Roelof Oosterhuis
2007-08-08: Fundamental Properties of Valuation Theory and Hensel's Lemma
Author: Hidetsune Kobayashi
2007-08-02: POPLmark Challenge Via de Bruijn Indices
Author: Stefan Berghofer
2007-08-02: First-Order Logic According to Fitting
Author: Stefan Berghofer

 

2006
2006-09-09: Hotel Key Card System
Author: Tobias Nipkow
2006-08-08: Abstract Hoare Logics
Author: Tobias Nipkow
2006-05-22: Flyspeck I: Tame Graphs
Authors: Gertrud Bauer and Tobias Nipkow
2006-05-15: CoreC++
Author: Daniel Wasserrab
2006-03-31: A Theory of Featherweight Java in Isabelle/HOL
Authors: J. Nathan Foster and Dimitrios Vytiniotis
2006-03-15: Instances of Schneider's generalized protocol of clock synchronization
Author: Damián Barsotti
2006-03-14: Cauchy's Mean Theorem and the Cauchy-Schwarz Inequality
Author: Benjamin Porter

 

2005
2005-11-11: Countable Ordinals
Author: Brian Huffman
2005-10-12: Fast Fourier Transform
Author: Clemens Ballarin
2005-06-24: Formalization of a Generalized Protocol for Clock Synchronization
Author: Alwen Tiu
2005-06-22: Proving the Correctness of Disk Paxos
Authors: Mauro Jaskelioff and Stephan Merz
2005-06-20: Jive Data and Store Model
Authors: Nicole Rauch and Norbert Schirmer
2005-06-01: Jinja is not Java
Authors: Gerwin Klein and Tobias Nipkow
2005-05-02: SHA1, RSA, PSS and more
Authors: Christina Lindenberg and Kai Wirt
2005-04-21: Category Theory to Yoneda's Lemma
Author: Greg O'Keefe

 

2004
2004-12-09: File Refinement
Authors: Karen Zee and Viktor Kuncak
2004-11-19: Integration theory and random variables
Author: Stefan Richter
2004-09-28: A Mechanically Verified, Efficient, Sound and Complete Theorem Prover For First Order Logic
Author: Tom Ridge
2004-09-20: Ramsey's theorem, infinitary version
Author: Tom Ridge
2004-09-20: Completeness theorem
Authors: James Margetson and Tom Ridge
2004-07-09: Compiling Exceptions Correctly
Author: Tobias Nipkow
2004-06-24: Depth First Search
Authors: Toshiaki Nishihara and Yasuhiko Minamide
2004-05-18: Groups, Rings and Modules
Authors: Hidetsune Kobayashi, L. Chen and H. Murao
2004-04-26: Topology
Author: Stefan Friedrich
2004-04-26: Lazy Lists II
Author: Stefan Friedrich
2004-04-05: Binary Search Trees
Author: Viktor Kuncak
2004-03-30: Functional Automata
Author: Tobias Nipkow
2004-03-19: Mini ML
Authors: Wolfgang Naraschewski and Tobias Nipkow
2004-03-19: AVL Trees
Authors: Tobias Nipkow and Cornelia Pusch
\ No newline at end of file diff --git a/web/rss.xml b/web/rss.xml --- a/web/rss.xml +++ b/web/rss.xml @@ -1,614 +1,618 @@ Archive of Formal Proofs https://www.isa-afp.org The Archive of Formal Proofs is a collection of proof libraries, examples, and larger scientific developments, mechanically checked in the theorem prover Isabelle. - 08 Dec 2020 00:00:00 +0000 + 27 Dec 2020 00:00:00 +0000 + + Cofinality and the Delta System Lemma + https://www.isa-afp.org/entries/Delta_System_Lemma.html + https://www.isa-afp.org/entries/Delta_System_Lemma.html + Pedro Sánchez Terraf + 27 Dec 2020 00:00:00 +0000 + +We formalize the basic results on cofinality of linearly ordered sets +and ordinals and Šanin’s Lemma for uncountable families of finite +sets. This last result is used to prove the countable chain condition +for Cohen posets. We work in the set theory framework of Isabelle/ZF, +using the Axiom of Choice as needed. + + + Topological semantics for paraconsistent and paracomplete logics + https://www.isa-afp.org/entries/Topological_Semantics.html + https://www.isa-afp.org/entries/Topological_Semantics.html + David Fuenmayor + 17 Dec 2020 00:00:00 +0000 + +We introduce a generalized topological semantics for paraconsistent +and paracomplete logics by drawing upon early works on topological +Boolean algebras (cf. works by Kuratowski, Zarycki, McKinsey & +Tarski, etc.). In particular, this work exemplarily illustrates the +shallow semantical embeddings approach (<a +href="http://dx.doi.org/10.1007/s11787-012-0052-y">SSE</a>) +employing the proof assistant Isabelle/HOL. By means of the SSE +technique we can effectively harness theorem provers, model finders +and 'hammers' for reasoning with quantified non-classical +logics. + Relational Minimum Spanning Tree Algorithms https://www.isa-afp.org/entries/Relational_Minimum_Spanning_Trees.html https://www.isa-afp.org/entries/Relational_Minimum_Spanning_Trees.html Walter Guttmann, Nicolas Robinson-O'Brien 08 Dec 2020 00:00:00 +0000 We verify the correctness of Prim's, Kruskal's and Borůvka's minimum spanning tree algorithms based on algebras for aggregation and minimisation. Inline Caching and Unboxing Optimization for Interpreters https://www.isa-afp.org/entries/Interpreter_Optimizations.html https://www.isa-afp.org/entries/Interpreter_Optimizations.html Martin Desharnais 07 Dec 2020 00:00:00 +0000 This Isabelle/HOL formalization builds on the <em>VeriComp</em> entry of the <em>Archive of Formal Proofs</em> to provide the following contributions: <ul> <li>an operational semantics for a realistic virtual machine (Std) for dynamically typed programming languages;</li> <li>the formalization of an inline caching optimization (Inca), a proof of bisimulation with (Std), and a compilation function;</li> <li>the formalization of an unboxing optimization (Ubx), a proof of bisimulation with (Inca), and a simple compilation function.</li> </ul> This formalization was described in the CPP 2021 paper <em>Towards Efficient and Verified Virtual Machines for Dynamic Languages</em> The Relational Method with Message Anonymity for the Verification of Cryptographic Protocols https://www.isa-afp.org/entries/Relational_Method.html https://www.isa-afp.org/entries/Relational_Method.html Pasquale Noce 05 Dec 2020 00:00:00 +0000 This paper introduces a new method for the formal verification of cryptographic protocols, the relational method, derived from Paulson's inductive method by means of some enhancements aimed at streamlining formal definitions and proofs, specially for protocols using public key cryptography. Moreover, this paper proposes a method to formalize a further security property, message anonymity, in addition to message confidentiality and authenticity. The relational method, including message anonymity, is then applied to the verification of a sample authentication protocol, comprising Password Authenticated Connection Establishment (PACE) with Chip Authentication Mapping followed by the explicit verification of an additional password over the PACE secure channel. Isabelle Marries Dirac: a Library for Quantum Computation and Quantum Information https://www.isa-afp.org/entries/Isabelle_Marries_Dirac.html https://www.isa-afp.org/entries/Isabelle_Marries_Dirac.html Anthony Bordg, Hanna Lachnitt, Yijun He 22 Nov 2020 00:00:00 +0000 This work is an effort to formalise some quantum algorithms and results in quantum information theory. Formal methods being critical for the safety and security of algorithms and protocols, we foresee their widespread use for quantum computing in the future. We have developed a large library for quantum computing in Isabelle based on a matrix representation for quantum circuits, successfully formalising the no-cloning theorem, quantum teleportation, Deutsch's algorithm, the Deutsch-Jozsa algorithm and the quantum Prisoner's Dilemma. + The HOL-CSP Refinement Toolkit + https://www.isa-afp.org/entries/CSP_RefTK.html + https://www.isa-afp.org/entries/CSP_RefTK.html + Safouan Taha, Burkhart Wolff, Lina Ye + 19 Nov 2020 00:00:00 +0000 + +We use a formal development for CSP, called HOL-CSP2.0, to analyse a +family of refinement notions, comprising classic and new ones. This +analysis enables to derive a number of properties that allow to deepen +the understanding of these notions, in particular with respect to +specification decomposition principles for the case of infinite sets +of events. The established relations between the refinement relations +help to clarify some obscure points in the CSP literature, but also +provide a weapon for shorter refinement proofs. Furthermore, we +provide a framework for state-normalisation allowing to formally +reason on parameterised process architectures. As a result, we have a +modern environment for formal proofs of concurrent systems that allow +for the combination of general infinite processes with locally finite +ones in a logically safe way. We demonstrate these +verification-techniques for classical, generalised examples: The +CopyBuffer for arbitrary data and the Dijkstra's Dining +Philosopher Problem of arbitrary size. + + Verified SAT-Based AI Planning https://www.isa-afp.org/entries/Verified_SAT_Based_AI_Planning.html https://www.isa-afp.org/entries/Verified_SAT_Based_AI_Planning.html Mohammad Abdulaziz, Friedrich Kurz 29 Oct 2020 00:00:00 +0000 We present an executable formally verified SAT encoding of classical AI planning that is based on the encodings by Kautz and Selman and the one by Rintanen et al. The encoding was experimentally tested and shown to be usable for reasonably sized standard AI planning benchmarks. We also use it as a reference to test a state-of-the-art SAT-based planner, showing that it sometimes falsely claims that problems have no solutions of certain lengths. The formalisation in this submission was described in an independent publication. AI Planning Languages Semantics https://www.isa-afp.org/entries/AI_Planning_Languages_Semantics.html https://www.isa-afp.org/entries/AI_Planning_Languages_Semantics.html Mohammad Abdulaziz, Peter Lammich 29 Oct 2020 00:00:00 +0000 This is an Isabelle/HOL formalisation of the semantics of the multi-valued planning tasks language that is used by the planning system Fast-Downward, the STRIPS fragment of the Planning Domain Definition Language (PDDL), and the STRIPS soundness meta-theory developed by Vladimir Lifschitz. It also contains formally verified checkers for checking the well-formedness of problems specified in either language as well the correctness of potential solutions. The formalisation in this entry was described in an earlier publication. A Sound Type System for Physical Quantities, Units, and Measurements https://www.isa-afp.org/entries/Physical_Quantities.html https://www.isa-afp.org/entries/Physical_Quantities.html Simon Foster, Burkhart Wolff 20 Oct 2020 00:00:00 +0000 The present Isabelle theory builds a formal model for both the International System of Quantities (ISQ) and the International System of Units (SI), which are both fundamental for physics and engineering. Both the ISQ and the SI are deeply integrated into Isabelle's type system. Quantities are parameterised by dimension types, which correspond to base vectors, and thus only quantities of the same dimension can be equated. Since the underlying "algebra of quantities" induces congruences on quantity and SI types, specific tactic support is developed to capture these. Our construction is validated by a test-set of known equivalences between both quantities and SI units. Moreover, the presented theory can be used for type-safe conversions between the SI system and others, like the British Imperial System (BIS). Finite Map Extras https://www.isa-afp.org/entries/Finite-Map-Extras.html https://www.isa-afp.org/entries/Finite-Map-Extras.html Javier Díaz 12 Oct 2020 00:00:00 +0000 This entry includes useful syntactic sugar, new operators and functions, and their associated lemmas for finite maps which currently are not present in the standard Finite_Map theory. A Formal Model of the Safely Composable Document Object Model with Shadow Roots https://www.isa-afp.org/entries/Shadow_SC_DOM.html https://www.isa-afp.org/entries/Shadow_SC_DOM.html Achim D. Brucker, Michael Herzberg 28 Sep 2020 00:00:00 +0000 In this AFP entry, we extend our formalization of the safely composable DOM with Shadow Roots. This is a proposal for Shadow Roots with stricter safety guarantess than the standard compliant formalization (see "Shadow DOM"). Shadow Roots are a recent proposal of the web community to support a component-based development approach for client-side web applications. Shadow roots are a significant extension to the DOM standard and, as web standards are condemned to be backward compatible, such extensions often result in complex specification that may contain unwanted subtleties that can be detected by a formalization. Our Isabelle/HOL formalization is, in the sense of object-orientation, an extension of our formalization of the core DOM and enjoys the same basic properties, i.e., it is extensible, i.e., can be extended without the need of re-proving already proven properties and executable, i.e., we can generate executable code from our specification. We exploit the executability to show that our formalization complies to the official standard of the W3C, respectively, the WHATWG. A Formal Model of the Document Object Model with Shadow Roots https://www.isa-afp.org/entries/Shadow_DOM.html https://www.isa-afp.org/entries/Shadow_DOM.html Achim D. Brucker, Michael Herzberg 28 Sep 2020 00:00:00 +0000 In this AFP entry, we extend our formalization of the core DOM with Shadow Roots. Shadow roots are a recent proposal of the web community to support a component-based development approach for client-side web applications. Shadow roots are a significant extension to the DOM standard and, as web standards are condemned to be backward compatible, such extensions often result in complex specification that may contain unwanted subtleties that can be detected by a formalization. Our Isabelle/HOL formalization is, in the sense of object-orientation, an extension of our formalization of the core DOM and enjoys the same basic properties, i.e., it is extensible, i.e., can be extended without the need of re-proving already proven properties and executable, i.e., we can generate executable code from our specification. We exploit the executability to show that our formalization complies to the official standard of the W3C, respectively, the WHATWG. A Formalization of Safely Composable Web Components https://www.isa-afp.org/entries/SC_DOM_Components.html https://www.isa-afp.org/entries/SC_DOM_Components.html Achim D. Brucker, Michael Herzberg 28 Sep 2020 00:00:00 +0000 While the (safely composable) DOM with shadow trees provide the technical basis for defining web components, it does neither defines the concept of web components nor specifies the safety properties that web components should guarantee. Consequently, the standard also does not discuss how or even if the methods for modifying the DOM respect component boundaries. In AFP entry, we present a formally verified model of safely composable web components and define safety properties which ensure that different web components can only interact with each other using well-defined interfaces. Moreover, our verification of the application programming interface (API) of the DOM revealed numerous invariants that implementations of the DOM API need to preserve to ensure the integrity of components. In comparison to the strict standard compliance formalization of Web Components in the AFP entry "DOM_Components", the notion of components in this entry (based on "SC_DOM" and "Shadow_SC_DOM") provides much stronger safety guarantees. A Formalization of Web Components https://www.isa-afp.org/entries/DOM_Components.html https://www.isa-afp.org/entries/DOM_Components.html Achim D. Brucker, Michael Herzberg 28 Sep 2020 00:00:00 +0000 While the DOM with shadow trees provide the technical basis for defining web components, the DOM standard neither defines the concept of web components nor specifies the safety properties that web components should guarantee. Consequently, the standard also does not discuss how or even if the methods for modifying the DOM respect component boundaries. In AFP entry, we present a formally verified model of web components and define safety properties which ensure that different web components can only interact with each other using well-defined interfaces. Moreover, our verification of the application programming interface (API) of the DOM revealed numerous invariants that implementations of the DOM API need to preserve to ensure the integrity of components. The Safely Composable DOM https://www.isa-afp.org/entries/Core_SC_DOM.html https://www.isa-afp.org/entries/Core_SC_DOM.html Achim D. Brucker, Michael Herzberg 28 Sep 2020 00:00:00 +0000 In this AFP entry, we formalize the core of the Safely Composable Document Object Model (SC DOM). The SC DOM improve the standard DOM (as formalized in the AFP entry "Core DOM") by strengthening the tree boundaries set by shadow roots: in the SC DOM, the shadow root is a sub-class of the document class (instead of a base class). This modifications also results in changes to some API methods (e.g., getOwnerDocument) to return the nearest shadow root rather than the document root. As a result, many API methods that, when called on a node inside a shadow tree, would previously ``break out'' and return or modify nodes that are possibly outside the shadow tree, now stay within its boundaries. This change in behavior makes programs that operate on shadow trees more predictable for the developer and allows them to make more assumptions about other code accessing the DOM. Syntax-Independent Logic Infrastructure https://www.isa-afp.org/entries/Syntax_Independent_Logic.html https://www.isa-afp.org/entries/Syntax_Independent_Logic.html Andrei Popescu, Dmitriy Traytel 16 Sep 2020 00:00:00 +0000 We formalize a notion of logic whose terms and formulas are kept abstract. In particular, logical connectives, substitution, free variables, and provability are not defined, but characterized by their general properties as locale assumptions. Based on this abstract characterization, we develop further reusable reasoning infrastructure. For example, we define parallel substitution (along with proving its characterizing theorems) from single-point substitution. Similarly, we develop a natural deduction style proof system starting from the abstract Hilbert-style one. These one-time efforts benefit different concrete logics satisfying our locales' assumptions. We instantiate the syntax-independent logic infrastructure to Robinson arithmetic (also known as Q) in the AFP entry <a href="https://www.isa-afp.org/entries/Robinson_Arithmetic.html">Robinson_Arithmetic</a> and to hereditarily finite set theory in the AFP entries <a href="https://www.isa-afp.org/entries/Goedel_HFSet_Semantic.html">Goedel_HFSet_Semantic</a> and <a href="https://www.isa-afp.org/entries/Goedel_HFSet_Semanticless.html">Goedel_HFSet_Semanticless</a>, which are part of our formalization of G&ouml;del's Incompleteness Theorems described in our CADE-27 paper <a href="https://dx.doi.org/10.1007/978-3-030-29436-6_26">A Formally Verified Abstract Account of Gödel's Incompleteness Theorems</a>. Robinson Arithmetic https://www.isa-afp.org/entries/Robinson_Arithmetic.html https://www.isa-afp.org/entries/Robinson_Arithmetic.html Andrei Popescu, Dmitriy Traytel 16 Sep 2020 00:00:00 +0000 We instantiate our syntax-independent logic infrastructure developed in <a href="https://www.isa-afp.org/entries/Syntax_Independent_Logic.html">a separate AFP entry</a> to the FOL theory of Robinson arithmetic (also known as Q). The latter was formalised using Nominal Isabelle by adapting <a href="https://www.isa-afp.org/entries/Incompleteness.html">Larry Paulson’s formalization of the Hereditarily Finite Set theory</a>. An Abstract Formalization of Gödel's Incompleteness Theorems https://www.isa-afp.org/entries/Goedel_Incompleteness.html https://www.isa-afp.org/entries/Goedel_Incompleteness.html Andrei Popescu, Dmitriy Traytel 16 Sep 2020 00:00:00 +0000 We present an abstract formalization of G&ouml;del's incompleteness theorems. We analyze sufficient conditions for the theorems' applicability to a partially specified logic. Our abstract perspective enables a comparison between alternative approaches from the literature. These include Rosser's variation of the first theorem, Jeroslow's variation of the second theorem, and the Swierczkowski&ndash;Paulson semantics-based approach. This AFP entry is the main entry point to the results described in our CADE-27 paper <a href="https://dx.doi.org/10.1007/978-3-030-29436-6_26">A Formally Verified Abstract Account of Gödel's Incompleteness Theorems</a>. As part of our abstract formalization's validation, we instantiate our locales twice in the separate AFP entries <a href="https://www.isa-afp.org/entries/Goedel_HFSet_Semantic.html">Goedel_HFSet_Semantic</a> and <a href="https://www.isa-afp.org/entries/Goedel_HFSet_Semanticless.html">Goedel_HFSet_Semanticless</a>. From Abstract to Concrete Gödel's Incompleteness Theorems—Part II https://www.isa-afp.org/entries/Goedel_HFSet_Semanticless.html https://www.isa-afp.org/entries/Goedel_HFSet_Semanticless.html Andrei Popescu, Dmitriy Traytel 16 Sep 2020 00:00:00 +0000 We validate an abstract formulation of G&ouml;del's Second Incompleteness Theorem from a <a href="https://www.isa-afp.org/entries/Goedel_Incompleteness.html">separate AFP entry</a> by instantiating it to the case of <i>finite consistent extensions of the Hereditarily Finite (HF) Set theory</i>, i.e., consistent FOL theories extending the HF Set theory with a finite set of axioms. The instantiation draws heavily on infrastructure previously developed by Larry Paulson in his <a href="https://www.isa-afp.org/entries/Incompleteness.html">direct formalisation of the concrete result</a>. It strengthens Paulson's formalization of G&ouml;del's Second from that entry by <i>not</i> assuming soundness, and in fact not relying on any notion of model or semantic interpretation. The strengthening was obtained by first replacing some of Paulson’s semantic arguments with proofs within his HF calculus, and then plugging in some of Paulson's (modified) lemmas to instantiate our soundness-free G&ouml;del's Second locale. From Abstract to Concrete Gödel's Incompleteness Theorems—Part I https://www.isa-afp.org/entries/Goedel_HFSet_Semantic.html https://www.isa-afp.org/entries/Goedel_HFSet_Semantic.html Andrei Popescu, Dmitriy Traytel 16 Sep 2020 00:00:00 +0000 We validate an abstract formulation of G&ouml;del's First and Second Incompleteness Theorems from a <a href="https://www.isa-afp.org/entries/Goedel_Incompleteness.html">separate AFP entry</a> by instantiating them to the case of <i>finite sound extensions of the Hereditarily Finite (HF) Set theory</i>, i.e., FOL theories extending the HF Set theory with a finite set of axioms that are sound in the standard model. The concrete results had been previously formalised in an <a href="https://www.isa-afp.org/entries/Incompleteness.html">AFP entry by Larry Paulson</a>; our instantiation reuses the infrastructure developed in that entry. A Formal Model of Extended Finite State Machines https://www.isa-afp.org/entries/Extended_Finite_State_Machines.html https://www.isa-afp.org/entries/Extended_Finite_State_Machines.html Michael Foster, Achim D. Brucker, Ramsay G. Taylor, John Derrick 07 Sep 2020 00:00:00 +0000 In this AFP entry, we provide a formalisation of extended finite state machines (EFSMs) where models are represented as finite sets of transitions between states. EFSMs execute traces to produce observable outputs. We also define various simulation and equality metrics for EFSMs in terms of traces and prove their strengths in relation to each other. Another key contribution is a framework of function definitions such that LTL properties can be phrased over EFSMs. Finally, we provide a simple example case study in the form of a drinks machine. Inference of Extended Finite State Machines https://www.isa-afp.org/entries/Extended_Finite_State_Machine_Inference.html https://www.isa-afp.org/entries/Extended_Finite_State_Machine_Inference.html Michael Foster, Achim D. Brucker, Ramsay G. Taylor, John Derrick 07 Sep 2020 00:00:00 +0000 In this AFP entry, we provide a formal implementation of a state-merging technique to infer extended finite state machines (EFSMs), complete with output and update functions, from black-box traces. In particular, we define the subsumption in context relation as a means of determining whether one transition is able to account for the behaviour of another. Building on this, we define the direct subsumption relation, which lifts the subsumption in context relation to EFSM level such that we can use it to determine whether it is safe to merge a given pair of transitions. Key proofs include the conditions necessary for subsumption to occur and that subsumption and direct subsumption are preorder relations. We also provide a number of different heuristics which can be used to abstract away concrete values into registers so that more states and transitions can be merged and provide proofs of the various conditions which must hold for these abstractions to subsume their ungeneralised counterparts. A Code Generator setup to create executable Scala code is also defined. Practical Algebraic Calculus Checker https://www.isa-afp.org/entries/PAC_Checker.html https://www.isa-afp.org/entries/PAC_Checker.html Mathias Fleury, Daniela Kaufmann 31 Aug 2020 00:00:00 +0000 Generating and checking proof certificates is important to increase the trust in automated reasoning tools. In recent years formal verification using computer algebra became more important and is heavily used in automated circuit verification. An existing proof format which covers algebraic reasoning and allows efficient proof checking is the practical algebraic calculus (PAC). In this development, we present the verified checker Pastèque that is obtained by synthesis via the Refinement Framework. This is the formalization going with our FMCAD'20 tool presentation. Some classical results in inductive inference of recursive functions https://www.isa-afp.org/entries/Inductive_Inference.html https://www.isa-afp.org/entries/Inductive_Inference.html Frank J. Balbach 31 Aug 2020 00:00:00 +0000 <p> This entry formalizes some classical concepts and results from inductive inference of recursive functions. In the basic setting a partial recursive function ("strategy") must identify ("learn") all functions from a set ("class") of recursive functions. To that end the strategy receives more and more values $f(0), f(1), f(2), \ldots$ of some function $f$ from the given class and in turn outputs descriptions of partial recursive functions, for example, Gödel numbers. The strategy is considered successful if the sequence of outputs ("hypotheses") converges to a description of $f$. A class of functions learnable in this sense is called "learnable in the limit". The set of all these classes is denoted by LIM. </p> <p> Other types of inference considered are finite learning (FIN), behaviorally correct learning in the limit (BC), and some variants of LIM with restrictions on the hypotheses: total learning (TOTAL), consistent learning (CONS), and class-preserving learning (CP). The main results formalized are the proper inclusions $\mathrm{FIN} \subset \mathrm{CP} \subset \mathrm{TOTAL} \subset \mathrm{CONS} \subset \mathrm{LIM} \subset \mathrm{BC} \subset 2^{\mathcal{R}}$, where $\mathcal{R}$ is the set of all total recursive functions. Further results show that for all these inference types except CONS, strategies can be assumed to be total recursive functions; that all inference types but CP are closed under the subset relation between classes; and that no inference type is closed under the union of classes. </p> <p> The above is based on a formalization of recursive functions heavily inspired by the <a href="https://www.isa-afp.org/entries/Universal_Turing_Machine.html">Universal Turing Machine</a> entry by Xu et al., but different in that it models partial functions with codomain <em>nat option</em>. The formalization contains a construction of a universal partial recursive function, without resorting to Turing machines, introduces decidability and recursive enumerability, and proves some standard results: existence of a Kleene normal form, the <em>s-m-n</em> theorem, Rice's theorem, and assorted fixed-point theorems (recursion theorems) by Kleene, Rogers, and Smullyan. </p> Relational Disjoint-Set Forests https://www.isa-afp.org/entries/Relational_Disjoint_Set_Forests.html https://www.isa-afp.org/entries/Relational_Disjoint_Set_Forests.html Walter Guttmann 26 Aug 2020 00:00:00 +0000 We give a simple relation-algebraic semantics of read and write operations on associative arrays. The array operations seamlessly integrate with assignments in the Hoare-logic library. Using relation algebras and Kleene algebras we verify the correctness of an array-based implementation of disjoint-set forests with a naive union operation and a find operation with path compression. Extensions to the Comprehensive Framework for Saturation Theorem Proving https://www.isa-afp.org/entries/Saturation_Framework_Extensions.html https://www.isa-afp.org/entries/Saturation_Framework_Extensions.html Jasmin Blanchette, Sophie Tourret 25 Aug 2020 00:00:00 +0000 This Isabelle/HOL formalization extends the AFP entry <em>Saturation_Framework</em> with the following contributions: <ul> <li>an application of the framework to prove Bachmair and Ganzinger's resolution prover RP refutationally complete, which was formalized in a more ad hoc fashion by Schlichtkrull et al. in the AFP entry <em>Ordered_Resultion_Prover</em>;</li> <li>generalizations of various basic concepts formalized by Schlichtkrull et al., which were needed to verify RP and could be useful to formalize other calculi, such as superposition;</li> <li>alternative proofs of fairness (and hence saturation and ultimately refutational completeness) for the given clause procedures GC and LGC, based on invariance.</li> </ul> Putting the `K' into Bird's derivation of Knuth-Morris-Pratt string matching https://www.isa-afp.org/entries/BirdKMP.html https://www.isa-afp.org/entries/BirdKMP.html Peter Gammie 25 Aug 2020 00:00:00 +0000 Richard Bird and collaborators have proposed a derivation of an intricate cyclic program that implements the Morris-Pratt string matching algorithm. Here we provide a proof of total correctness for Bird's derivation and complete it by adding Knuth's optimisation. Amicable Numbers https://www.isa-afp.org/entries/Amicable_Numbers.html https://www.isa-afp.org/entries/Amicable_Numbers.html Angeliki Koutsoukou-Argyraki 04 Aug 2020 00:00:00 +0000 This is a formalisation of Amicable Numbers, involving some relevant material including Euler's sigma function, some relevant definitions, results and examples as well as rules such as Th&#257;bit ibn Qurra's Rule, Euler's Rule, te Riele's Rule and Borho's Rule with breeders. Ordinal Partitions https://www.isa-afp.org/entries/Ordinal_Partitions.html https://www.isa-afp.org/entries/Ordinal_Partitions.html Lawrence C. Paulson 03 Aug 2020 00:00:00 +0000 The theory of partition relations concerns generalisations of Ramsey's theorem. For any ordinal $\alpha$, write $\alpha \to (\alpha, m)^2$ if for each function $f$ from unordered pairs of elements of $\alpha$ into $\{0,1\}$, either there is a subset $X\subseteq \alpha$ order-isomorphic to $\alpha$ such that $f\{x,y\}=0$ for all $\{x,y\}\subseteq X$, or there is an $m$ element set $Y\subseteq \alpha$ such that $f\{x,y\}=1$ for all $\{x,y\}\subseteq Y$. (In both cases, with $\{x,y\}$ we require $x\not=y$.) In particular, the infinite Ramsey theorem can be written in this notation as $\omega \to (\omega, \omega)^2$, or if we restrict $m$ to the positive integers as above, then $\omega \to (\omega, m)^2$ for all $m$. This entry formalises Larson's proof of $\omega^\omega \to (\omega^\omega, m)^2$ along with a similar proof of a result due to Specker: $\omega^2 \to (\omega^2, m)^2$. Also proved is a necessary result by Erdős and Milner: $\omega^{1+\alpha\cdot n} \to (\omega^{1+\alpha}, 2^n)^2$. - - A Formal Proof of The Chandy--Lamport Distributed Snapshot Algorithm - https://www.isa-afp.org/entries/Chandy_Lamport.html - https://www.isa-afp.org/entries/Chandy_Lamport.html - Ben Fiedler, Dmitriy Traytel - 21 Jul 2020 00:00:00 +0000 - -We provide a suitable distributed system model and implementation of the -Chandy--Lamport distributed snapshot algorithm [ACM Transactions on -Computer Systems, 3, 63-75, 1985]. Our main result is a formal -termination and correctness proof of the Chandy--Lamport algorithm and -its use in stable property detection. - - - Relational Characterisations of Paths - https://www.isa-afp.org/entries/Relational_Paths.html - https://www.isa-afp.org/entries/Relational_Paths.html - Walter Guttmann, Peter Höfner - 13 Jul 2020 00:00:00 +0000 - -Binary relations are one of the standard ways to encode, characterise -and reason about graphs. Relation algebras provide equational axioms -for a large fragment of the calculus of binary relations. Although -relations are standard tools in many areas of mathematics and -computing, researchers usually fall back to point-wise reasoning when -it comes to arguments about paths in a graph. We present a purely -algebraic way to specify different kinds of paths in Kleene relation -algebras, which are relation algebras equipped with an operation for -reflexive transitive closure. We study the relationship between paths -with a designated root vertex and paths without such a vertex. Since -we stay in first-order logic this development helps with mechanising -proofs. To demonstrate the applicability of the algebraic framework we -verify the correctness of three basic graph algorithms. - - - A Formally Verified Checker of the Safe Distance Traffic Rules for Autonomous Vehicles - https://www.isa-afp.org/entries/Safe_Distance.html - https://www.isa-afp.org/entries/Safe_Distance.html - Albert Rizaldi, Fabian Immler - 01 Jun 2020 00:00:00 +0000 - -The Vienna Convention on Road Traffic defines the safe distance -traffic rules informally. This could make autonomous vehicle liable -for safe-distance-related accidents because there is no clear -definition of how large a safe distance is. We provide a formally -proven prescriptive definition of a safe distance, and checkers which -can decide whether an autonomous vehicle is obeying the safe distance -rule. Not only does our work apply to the domain of law, but it also -serves as a specification for autonomous vehicle manufacturers and for -online verification of path planners. - diff --git a/web/statistics.html b/web/statistics.html --- a/web/statistics.html +++ b/web/statistics.html @@ -1,302 +1,302 @@ Archive of Formal Proofs

 

 

 

 

 

 

Statistics

 

Statistics

- + - - + +
Number of Articles:574
Number of Articles:577
Number of Authors:370
Number of lemmas:~158,600
Lines of Code:~2,785,500
Number of lemmas:~160,600
Lines of Code:~2,797,900

Most used AFP articles:

NameUsed by ? articles
1. List-Index 16
2. Coinductive 12
Collections 12
Regular-Sets 12
3. Landau_Symbols 11
Show 11
4. Polynomial_Factorization 10
5. Abstract-Rewriting 9
Automatic_Refinement 9
Deriving 9
Jordan_Normal_Form 9

Growth in number of articles:

Growth in lines of code:

Growth in number of authors:

Size of articles:

\ No newline at end of file diff --git a/web/topics.html b/web/topics.html --- a/web/topics.html +++ b/web/topics.html @@ -1,930 +1,935 @@ Archive of Formal Proofs

 

 

 

 

 

 

Index by Topic

 

Computer science

Artificial intelligence

Automata and formal languages

Algorithms

Knuth_Morris_Pratt   Probabilistic_While   Comparison_Sort_Lower_Bound   Quick_Sort_Cost   TortoiseHare   Selection_Heap_Sort   VerifyThis2018   CYK   Boolean_Expression_Checkers   Efficient-Mergesort   SATSolverVerification   MuchAdoAboutTwo   First_Order_Terms   Monad_Memo_DP   Hidden_Markov_Models   Imperative_Insertion_Sort   Formal_SSA   ROBDD   Median_Of_Medians_Selection   Fisher_Yates   Optimal_BST   IMP2   Auto2_Imperative_HOL   List_Inversions   IMP2_Binary_Heap   MFOTL_Monitor   Adaptive_State_Counting   Generic_Join   VerifyThis2019   Generalized_Counting_Sort   MFODL_Monitor_Optimized   Sliding_Window_Algorithm   PAC_Checker   Graph: DFS_Framework   Prpu_Maxflow   Floyd_Warshall   Roy_Floyd_Warshall   Dijkstra_Shortest_Path   EdmondsKarp_Maxflow   Depth-First-Search   GraphMarkingIBP   Transitive-Closure   Transitive-Closure-II   Gabow_SCC   Kruskal   Prim_Dijkstra_Simple   Relational_Minimum_Spanning_Trees   Distributed: DiskPaxos   GenClock   ClockSynchInst   Heard_Of   Consensus_Refined   Abortable_Linearizable_Modules   IMAP-CRDT   CRDT   Chandy_Lamport   OpSets   Stellar_Quorums   WOOT_Strong_Eventual_Consistency   Concurrent: ConcurrentGC   Online: List_Update   Geometry: Closest_Pair_Points   Approximation: Approximation_Algorithms   Mathematical: FFT   Gauss-Jordan-Elim-Fun   UpDown_Scheme   Polynomials   Gauss_Jordan   Echelon_Form   QR_Decomposition   Hermite   Groebner_Bases   Diophantine_Eqns_Lin_Hom   Taylor_Models   LLL_Basis_Reduction   Signature_Groebner   Smith_Normal_Form   Safe_Distance   Optimization: Simplex   Quantum computing: Isabelle_Marries_Dirac  

Concurrency

Data structures

Functional programming

Hardware

SPARCv8  

Machine learning

Networks

Programming languages

Clean   Decl_Sem_Fun_PL   Language definitions: CakeML   WebAssembly   pGCL   GPU_Kernel_PL   LightweightJava   CoreC++   FeatherweightJava   Jinja   JinjaThreads   Locally-Nameless-Sigma   AutoFocus-Stream   FocusStreamsCaseStudies   Isabelle_Meta_Model   Simpl   Complx   Safe_OCL   Isabelle_C   Lambda calculi: Higher_Order_Terms   Launchbury   PCF   POPLmark-deBruijn   Lam-ml-Normalization   LambdaMu   Binding_Syntax_Theory   LambdaAuth   Type systems: Name_Carrying_Type_Inference   MiniML   Possibilistic_Noninterference   SIFUM_Type_Systems   Dependent_SIFUM_Type_Systems   Strong_Security   WHATandWHERE_Security   VolpanoSmith   Physical_Quantities   Logics: ConcurrentIMP   Refine_Monadic   Automatic_Refinement   MonoBoolTranAlgebra   Simpl   Separation_Algebra   Separation_Logic_Imperative_HOL   Relational-Incorrectness-Logic   Abstract-Hoare-Logics   Kleene_Algebra   KAT_and_DRA   KAD   BytecodeLogicJmlTypes   DataRefinementIBP   RefinementReactive   SIFPL   TLA   Ribbon_Proofs   Separata   Complx   Differential_Dynamic_Logic   Hoare_Time   IMP2   UTP   QHLProver   Differential_Game_Logic   Compiling: CakeML_Codegen   Compiling-Exceptions-Correctly   NormByEval   Density_Compiler   VeriComp   Static analysis: RIPEMD-160-SPARK   Program-Conflict-Analysis   Shivers-CFA   Slicing   HRB-Slicing   InfPathElimination   Abs_Int_ITP2012   Transformations: Call_Arity   Refine_Imperative_HOL   WorkerWrapper   Monad_Memo_DP   Formal_SSA   Minimal_SSA   Misc: JiveDataStoreModel   Pop_Refinement   Case_Labeling   Interpreter_Optimizations  

Security

Semantics

System description languages

Logic

Philosophical aspects

General logic

Computability

Set theory

Proof theory

Rewriting

Mathematics

Order

Algebra

Analysis

Probability theory

Number theory

Games and economics

Geometry

Topology

Graph theory

Combinatorics

Category theory

Physics

Misc

Tools

\ No newline at end of file