src/HOL/ex/PresburgerEx.thy
changeset 23323 2274edb9a8b2
parent 20663 2024d9f7df9c
child 23462 11728d83794c
equal deleted inserted replaced
23322:6693a45a226c 23323:2274edb9a8b2
     3     Author:     Amine Chaieb, TU Muenchen
     3     Author:     Amine Chaieb, TU Muenchen
     4 *)
     4 *)
     5 
     5 
     6 header {* Some examples for Presburger Arithmetic *}
     6 header {* Some examples for Presburger Arithmetic *}
     7 
     7 
     8 theory PresburgerEx imports Main begin
     8 theory PresburgerEx imports Presburger begin
       
     9 
       
    10 lemma "\<And>m n ja ia. \<lbrakk>\<not> m \<le> j; \<not> n \<le> i; e \<noteq> 0; Suc j \<le> ja\<rbrakk> \<Longrightarrow> \<exists>m. \<forall>ja ia. m \<le> ja \<longrightarrow> (if j = ja \<and> i = ia then e else 0) = 0" by presburger
       
    11 lemma "(0::nat) < emBits mod 8 \<Longrightarrow> 8 + emBits div 8 * 8 - emBits = 8 - emBits mod 8" 
       
    12 by presburger
       
    13 lemma "(0::nat) < emBits mod 8 \<Longrightarrow> 8 + emBits div 8 * 8 - emBits = 8 - emBits mod 8" 
       
    14 by presburger
     9 
    15 
    10 theorem "(\<forall>(y::int). 3 dvd y) ==> \<forall>(x::int). b < x --> a \<le> x"
    16 theorem "(\<forall>(y::int). 3 dvd y) ==> \<forall>(x::int). b < x --> a \<le> x"
    11   by presburger
    17   by presburger
    12 
    18 
    13 theorem "!! (y::int) (z::int) (n::int). 3 dvd z ==> 2 dvd (y::int) ==>
    19 theorem "!! (y::int) (z::int) (n::int). 3 dvd z ==> 2 dvd (y::int) ==>
    39 
    45 
    40 theorem "~ (\<exists>(x::int) (y::int) (z::int). 4*x + (-6::int)*y = 1)"
    46 theorem "~ (\<exists>(x::int) (y::int) (z::int). 4*x + (-6::int)*y = 1)"
    41   by presburger
    47   by presburger
    42 
    48 
    43 theorem "\<forall>(x::int). b < x --> a \<le> x"
    49 theorem "\<forall>(x::int). b < x --> a \<le> x"
    44   apply (presburger (no_quantify))
    50   apply (presburger elim)
    45   oops
    51   oops
    46 
    52 
    47 theorem "~ (\<exists>(x::int). False)"
    53 theorem "~ (\<exists>(x::int). False)"
    48   by presburger
    54   by presburger
    49 
    55 
    50 theorem "\<forall>(x::int). (a::int) < 3 * x --> b < 3 * x"
    56 theorem "\<forall>(x::int). (a::int) < 3 * x --> b < 3 * x"
    51   apply (presburger (no_quantify))
    57   apply (presburger elim)
    52   oops
    58   oops
    53 
    59 
    54 theorem "\<forall>(x::int). (2 dvd x) --> (\<exists>(y::int). x = 2*y)"
    60 theorem "\<forall>(x::int). (2 dvd x) --> (\<exists>(y::int). x = 2*y)"
    55   by presburger 
    61   by presburger 
    56 
    62