# HG changeset patch # User huffman # Date 1182308816 -7200 # Node ID 771117253634ba292630d3088f26a69dc69da766 # Parent 5a55a9409e573301994f92871cc8d20c831d3e4c section headings diff -r 5a55a9409e57 -r 771117253634 src/HOL/Presburger.thy --- a/src/HOL/Presburger.thy Wed Jun 20 05:06:16 2007 +0200 +++ b/src/HOL/Presburger.thy Wed Jun 20 05:06:56 2007 +0200 @@ -3,6 +3,8 @@ Author: Amine Chaieb, TU Muenchen *) +header {* Decision Procedure for Presburger Arithmetic *} + theory Presburger imports NatSimprocs SetInterval uses "Tools/Presburger/cooper_data" "Tools/Presburger/qelim" @@ -12,7 +14,7 @@ begin setup {* Cooper_Data.setup*} -section{* The @{text "-\"} and @{text "+\"} Properties *} +subsection{* The @{text "-\"} and @{text "+\"} Properties *} lemma minf: "\\(z ::'a::linorder).\xz.\x @@ -175,9 +177,9 @@ thus "\(x::int).(\j\{1 .. D}. \b\A. x \ b - j)\ (\d dvd x+t) \ (\d dvd (x + D) + t)" by auto qed blast -section{* Cooper's Theorem @{text "-\"} and @{text "+\"} Version *} +subsection{* Cooper's Theorem @{text "-\"} and @{text "+\"} Version *} -subsection{* First some trivial facts about periodic sets or predicates *} +subsubsection{* First some trivial facts about periodic sets or predicates *} lemma periodic_finite_ex: assumes dpos: "(0::int) < d" and modd: "ALL x k. P x = P(x - k*d)" shows "(EX x. P x) = (EX j : {1..d}. P j)" @@ -208,7 +210,7 @@ qed qed auto -subsection{* The @{text "-\"} Version*} +subsubsection{* The @{text "-\"} Version*} lemma decr_lemma: "0 < (d::int) \ x - (abs(x-z)+1) * d < z" by(induct rule: int_gr_induct,simp_all add:int_distrib) @@ -286,7 +288,7 @@ ultimately show ?thesis by blast qed -subsection {* The @{text "+\"} Version*} +subsubsection {* The @{text "+\"} Version*} lemma plusinfinity: assumes dpos: "(0::int) < d" and