title: General Annotations in MiniZinc
body: <p>I have some questions about the meaning and usage for some of the General Annotations for the MiniZinc language. Please explain when they should be used and if possible, give examples.</p>
  <p>I have copied the definitions I have found to make the questions more straight forward, from the MiniZinc official lib.</p>
  <blockquote>
  <p>annotation <strong>is_defined_var</strong></p>
  <p>Declare the annotated variable as being functionally defined. This annotation is introduced into FlatZinc code by the compiler.</p>
  </blockquote>
  <p>What does it mean that the variable is functionally defined? When should this be used?</p>
  <blockquote>
  <p>annotation <strong>maybe_partial</strong></p>
  <p>Declare that expression may have undefined result (to avoid warnings)</p>
  </blockquote>
  <p>What does it mean that an expression has undefined result? Could someone give an example of this?</p>
  <blockquote>
  <p>annotation <strong>promise_total</strong></p>
  <p>Declare function as total, i.e. it does not put any constraints on its arguments.</p>
  </blockquote>
  <p>What does this mean? I would love to see an example of this. Is this when you introduce your own function, or can it also be used for the already defined Minizink functions?</p>
  <blockquote>
  <p>annotation <strong>var_is_introduced</strong></p>
  <p>Declare a variable as being introduced by the compiler.</p>
  </blockquote>
  <p>Again, what does it mean that the variable is introduced by a complier? What would be the opposite statement? The variable is not introduced by the compiler?</p>
  <blockquote>
  <p>annotation <strong>defines_var(var $t: c)</strong></p>
  <p>Declare variable: c as being functionally defined by the annotated constraint. This annotation is introduced into FlatZinc code by the compiler.</p>
  </blockquote>
  <p>Again what does it mean that c is functionally defined, and could someone give an example of this?</p>
  <p>I know that these are a lot of questions about a very specific library, but I could not find any good explanations anywhere.</p>