src/HOL/SMT.thy
changeset 41126 e0bd443c0fdd
parent 41125 4a9eec045f2a
child 41127 2ea84c8535c6
equal deleted inserted replaced
41125:4a9eec045f2a 41126:e0bd443c0fdd
   128   "z3div k l = (if 0 \<le> l then k div l else -(k div (-l)))"
   128   "z3div k l = (if 0 \<le> l then k div l else -(k div (-l)))"
   129 
   129 
   130 definition z3mod :: "int \<Rightarrow> int \<Rightarrow> int" where
   130 definition z3mod :: "int \<Rightarrow> int \<Rightarrow> int" where
   131   "z3mod k l = (if 0 \<le> l then k mod l else k mod (-l))"
   131   "z3mod k l = (if 0 \<le> l then k mod l else k mod (-l))"
   132 
   132 
   133 lemma div_by_z3div: "k div l = (
   133 lemma div_by_z3div:
   134      if k = 0 \<or> l = 0 then 0
   134   "\<forall>k l. k div l = (
   135      else if (0 < k \<and> 0 < l) \<or> (k < 0 \<and> 0 < l) then z3div k l
   135     if k = 0 \<or> l = 0 then 0
   136      else z3div (-k) (-l))"
   136     else if (0 < k \<and> 0 < l) \<or> (k < 0 \<and> 0 < l) then z3div k l
   137   by (auto simp add: z3div_def)
   137     else z3div (-k) (-l))"
   138 
   138   by (auto simp add: z3div_def trigger_def)
   139 lemma mod_by_z3mod: "k mod l = (
   139 
   140      if l = 0 then k
   140 lemma mod_by_z3mod:
   141      else if k = 0 then 0
   141   "\<forall>k l. k mod l = (
   142      else if (0 < k \<and> 0 < l) \<or> (k < 0 \<and> 0 < l) then z3mod k l
   142     if l = 0 then k
   143      else - z3mod (-k) (-l))"
   143     else if k = 0 then 0
   144   by (auto simp add: z3mod_def)
   144     else if (0 < k \<and> 0 < l) \<or> (k < 0 \<and> 0 < l) then z3mod k l
       
   145     else - z3mod (-k) (-l))"
       
   146   by (auto simp add: z3mod_def trigger_def)
   145 
   147 
   146 
   148 
   147 
   149 
   148 subsection {* Setup *}
   150 subsection {* Setup *}
   149 
   151