Sophie

Sophie

distrib > Fedora > 19 > i386 > by-pkgid > 6141746cd5048a6ddf1cf3194274ce61 > files > 866

ghc-Agda-devel-2.3.2.1-5.fc19.i686.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Agda.TypeChecking.Positivity</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Agda-TypeChecking-Positivity.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Agda-TypeChecking-Positivity.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">Agda-2.3.2.1: A dependently typed functional programming language and proof assistant</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Agda.TypeChecking.Positivity</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Check that a datatype is strictly positive.
</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:checkStrictlyPositive">checkStrictlyPositive</a> :: <a href="/usr/share/doc/ghc/html/libraries/containers-0.4.2.1/Data-Set.html#t:Set">Set</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:getDefArity">getDefArity</a> :: <a href="Agda-TypeChecking-Monad-Base.html#t:Definition">Definition</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCMT">TCMT</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/System-IO.html#t:IO">IO</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Int.html#t:Int">Int</a></li><li class="src short"><span class="keyword">data</span>  <a href="#t:OccursWhere">OccursWhere</a> <ul class="subs"><li>= <a href="#v:LeftOfArrow">LeftOfArrow</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a>  </li><li>| <a href="#v:DefArg">DefArg</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> <a href="Agda-Syntax-Common.html#t:Nat">Nat</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a>  </li><li>| <a href="#v:UnderInf">UnderInf</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a>  </li><li>| <a href="#v:VarArg">VarArg</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a>  </li><li>| <a href="#v:MetaArg">MetaArg</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a>  </li><li>| <a href="#v:ConArgType">ConArgType</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a>  </li><li>| <a href="#v:IndArgType">IndArgType</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a>  </li><li>| <a href="#v:InClause">InClause</a> <a href="Agda-Syntax-Common.html#t:Nat">Nat</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a>  </li><li>| <a href="#v:Matched">Matched</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a>  </li><li>| <a href="#v:InDefOf">InDefOf</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a>  </li><li>| <a href="#v:Here">Here</a>  </li><li>| <a href="#v:Unknown">Unknown</a>  </li></ul></li><li class="src short"><a href="#v:-62--42--60-">(&gt;*&lt;)</a> :: <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></li><li class="src short"><span class="keyword">data</span>  <a href="#t:Item">Item</a> <ul class="subs"><li>= <a href="#v:AnArg">AnArg</a> <a href="Agda-Syntax-Common.html#t:Nat">Nat</a>  </li><li>| <a href="#v:ADef">ADef</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a>  </li></ul></li><li class="src short"><span class="keyword">type</span> <a href="#t:Occurrences">Occurrences</a> = <a href="/usr/share/doc/ghc/html/libraries/containers-0.4.2.1/Data-Map.html#t:Map">Map</a> <a href="Agda-TypeChecking-Positivity.html#t:Item">Item</a> [<a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a>]</li><li class="src short"><a href="#v:-62--43--60-">(&gt;+&lt;)</a> :: <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a></li><li class="src short"><a href="#v:concatOccurs">concatOccurs</a> :: [<a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a>] -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a></li><li class="src short"><a href="#v:occursAs">occursAs</a> :: (<a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a>) -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a></li><li class="src short"><a href="#v:here">here</a> :: <a href="Agda-TypeChecking-Positivity.html#t:Item">Item</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a></li><li class="src short"><a href="#v:onlyVarsUpTo">onlyVarsUpTo</a> :: <a href="Agda-Syntax-Common.html#t:Nat">Nat</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a></li><li class="src short"><span class="keyword">data</span>  <a href="#t:OccEnv">OccEnv</a>  = <a href="#v:OccEnv">OccEnv</a> {<ul class="subs"><li><a href="#v:vars">vars</a> :: [<a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Agda-TypeChecking-Positivity.html#t:Item">Item</a>]</li><li><a href="#v:inf">inf</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a></li></ul>}</li><li class="src short"><span class="keyword">type</span> <a href="#t:OccM">OccM</a> = <a href="/usr/share/doc/ghc/html/libraries/mtl-2.1.2/Control-Monad-Reader.html#t:Reader">Reader</a> <a href="Agda-TypeChecking-Positivity.html#t:OccEnv">OccEnv</a></li><li class="src short"><a href="#v:withExtendedOccEnv">withExtendedOccEnv</a> ::  <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Agda-TypeChecking-Positivity.html#t:Item">Item</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:OccM">OccM</a> a -&gt; <a href="Agda-TypeChecking-Positivity.html#t:OccM">OccM</a> a</li><li class="src short"><a href="#v:getOccurrences">getOccurrences</a> :: <a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> a =&gt; [<a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Agda-TypeChecking-Positivity.html#t:Item">Item</a>] -&gt; a -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a></li><li class="src short"><span class="keyword">class</span>  <a href="#t:ComputeOccurrences">ComputeOccurrences</a> a  <span class="keyword">where</span><ul class="subs"><li><a href="#v:occurrences">occurrences</a> :: a -&gt; <a href="Agda-TypeChecking-Positivity.html#t:OccM">OccM</a> <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a></li></ul></li><li class="src short"><a href="#v:computeOccurrences">computeOccurrences</a> :: <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a></li><li class="src short"><a href="#v:etaExpandClause">etaExpandClause</a> :: <a href="Agda-Syntax-Common.html#t:Nat">Nat</a> -&gt; <a href="Agda-Syntax-Internal.html#t:Clause">Clause</a> -&gt; <a href="Agda-Syntax-Internal.html#t:Clause">Clause</a></li><li class="src short"><span class="keyword">data</span>  <a href="#t:Node">Node</a> <ul class="subs"><li>= <a href="#v:DefNode">DefNode</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a>  </li><li>| <a href="#v:ArgNode">ArgNode</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> <a href="Agda-Syntax-Common.html#t:Nat">Nat</a>  </li></ul></li><li class="src short"><span class="keyword">data</span>  <a href="#t:Edge">Edge</a>  = <a href="#v:Edge">Edge</a> <a href="Agda-TypeChecking-Monad-Base.html#t:Occurrence">Occurrence</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></li><li class="src short"><a href="#v:buildOccurrenceGraph">buildOccurrenceGraph</a> :: <a href="/usr/share/doc/ghc/html/libraries/containers-0.4.2.1/Data-Set.html#t:Set">Set</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> (<a href="Agda-Utils-Graph.html#t:Graph">Graph</a> <a href="Agda-TypeChecking-Positivity.html#t:Node">Node</a> <a href="Agda-TypeChecking-Positivity.html#t:Edge">Edge</a>)</li><li class="src short"><a href="#v:computeEdge">computeEdge</a> :: <a href="/usr/share/doc/ghc/html/libraries/containers-0.4.2.1/Data-Set.html#t:Set">Set</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> (<a href="Agda-TypeChecking-Positivity.html#t:Node">Node</a>, <a href="Agda-TypeChecking-Positivity.html#t:Edge">Edge</a>)</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:checkStrictlyPositive" class="def">checkStrictlyPositive</a> :: <a href="/usr/share/doc/ghc/html/libraries/containers-0.4.2.1/Data-Set.html#t:Set">Set</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a><a href="src/Agda-TypeChecking-Positivity.html#checkStrictlyPositive" class="link">Source</a></p><div class="doc"><p>Check that the datatypes in the mutual block containing the given
 declarations are strictly positive.
</p></div></div><div class="top"><p class="src"><a name="v:getDefArity" class="def">getDefArity</a> :: <a href="Agda-TypeChecking-Monad-Base.html#t:Definition">Definition</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCMT">TCMT</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/System-IO.html#t:IO">IO</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Int.html#t:Int">Int</a><a href="src/Agda-TypeChecking-Positivity.html#getDefArity" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:OccursWhere" class="def">OccursWhere</a>  <a href="src/Agda-TypeChecking-Positivity.html#OccursWhere" class="link">Source</a></p><div class="doc"><p>Description of an occurrence.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:LeftOfArrow" class="def">LeftOfArrow</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:DefArg" class="def">DefArg</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> <a href="Agda-Syntax-Common.html#t:Nat">Nat</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></td><td class="doc"><p>in the nth argument of a define constant
</p></td></tr><tr><td class="src"><a name="v:UnderInf" class="def">UnderInf</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></td><td class="doc"><p>in the principal argument of built-in &#8734;
</p></td></tr><tr><td class="src"><a name="v:VarArg" class="def">VarArg</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></td><td class="doc"><p>as an argument to a bound variable
</p></td></tr><tr><td class="src"><a name="v:MetaArg" class="def">MetaArg</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></td><td class="doc"><p>as an argument of a metavariable
</p></td></tr><tr><td class="src"><a name="v:ConArgType" class="def">ConArgType</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></td><td class="doc"><p>in the type of a constructor
</p></td></tr><tr><td class="src"><a name="v:IndArgType" class="def">IndArgType</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></td><td class="doc"><p>in a datatype index of a constructor
</p></td></tr><tr><td class="src"><a name="v:InClause" class="def">InClause</a> <a href="Agda-Syntax-Common.html#t:Nat">Nat</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></td><td class="doc"><p>in the nth clause of a defined function
</p></td></tr><tr><td class="src"><a name="v:Matched" class="def">Matched</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></td><td class="doc"><p>matched against in a clause of a defined function
</p></td></tr><tr><td class="src"><a name="v:InDefOf" class="def">InDefOf</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></td><td class="doc"><p>in the definition of a constant
</p></td></tr><tr><td class="src"><a name="v:Here" class="def">Here</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:Unknown" class="def">Unknown</a></td><td class="doc"><p>an unknown position (treated as negative)
</p></td></tr></table></div><div class="subs instances"><p id="control.i:OccursWhere" class="caption collapser" onclick="toggleSection('i:OccursWhere')">Instances</p><div id="section.i:OccursWhere" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-Pretty.html#t:PrettyTCM">PrettyTCM</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:-62--42--60-" class="def">(&gt;*&lt;)</a> :: <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a><a href="src/Agda-TypeChecking-Positivity.html#%3E%2A%3C" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Item" class="def">Item</a>  <a href="src/Agda-TypeChecking-Positivity.html#Item" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:AnArg" class="def">AnArg</a> <a href="Agda-Syntax-Common.html#t:Nat">Nat</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:ADef" class="def">ADef</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:Item" class="caption collapser" onclick="toggleSection('i:Item')">Instances</p><div id="section.i:Item" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Agda-TypeChecking-Positivity.html#t:Item">Item</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Ord.html#t:Ord">Ord</a> <a href="Agda-TypeChecking-Positivity.html#t:Item">Item</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="Agda-TypeChecking-Positivity.html#t:Item">Item</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Occurrences" class="def">Occurrences</a> = <a href="/usr/share/doc/ghc/html/libraries/containers-0.4.2.1/Data-Map.html#t:Map">Map</a> <a href="Agda-TypeChecking-Positivity.html#t:Item">Item</a> [<a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a>]<a href="src/Agda-TypeChecking-Positivity.html#Occurrences" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:-62--43--60-" class="def">(&gt;+&lt;)</a> :: <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a><a href="src/Agda-TypeChecking-Positivity.html#%3E%2B%3C" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:concatOccurs" class="def">concatOccurs</a> :: [<a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a>] -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a><a href="src/Agda-TypeChecking-Positivity.html#concatOccurs" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:occursAs" class="def">occursAs</a> :: (<a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a>) -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a><a href="src/Agda-TypeChecking-Positivity.html#occursAs" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:here" class="def">here</a> :: <a href="Agda-TypeChecking-Positivity.html#t:Item">Item</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a><a href="src/Agda-TypeChecking-Positivity.html#here" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:onlyVarsUpTo" class="def">onlyVarsUpTo</a> :: <a href="Agda-Syntax-Common.html#t:Nat">Nat</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a><a href="src/Agda-TypeChecking-Positivity.html#onlyVarsUpTo" class="link">Source</a></p><div class="doc"><p><code>onlyVarsUpTo n occs</code> discards occurrences of de Bruijn index <code>&gt;= n</code>.
</p></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:OccEnv" class="def">OccEnv</a>  <a href="src/Agda-TypeChecking-Positivity.html#OccEnv" class="link">Source</a></p><div class="doc"><p>Context for computing occurrences.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:OccEnv" class="def">OccEnv</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:vars" class="def">vars</a> :: [<a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Agda-TypeChecking-Positivity.html#t:Item">Item</a>]</dt><dd class="doc"><p>Items corresponding to the free variables.
</p></dd><dt class="src"><a name="v:inf" class="def">inf</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a></dt><dd class="doc"><p>Name for &#8734; builtin.
</p></dd></dl><div class="clear"></div></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:OccM" class="def">OccM</a> = <a href="/usr/share/doc/ghc/html/libraries/mtl-2.1.2/Control-Monad-Reader.html#t:Reader">Reader</a> <a href="Agda-TypeChecking-Positivity.html#t:OccEnv">OccEnv</a><a href="src/Agda-TypeChecking-Positivity.html#OccM" class="link">Source</a></p><div class="doc"><p>Monad for computing occurrences.
</p></div></div><div class="top"><p class="src"><a name="v:withExtendedOccEnv" class="def">withExtendedOccEnv</a> ::  <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Agda-TypeChecking-Positivity.html#t:Item">Item</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:OccM">OccM</a> a -&gt; <a href="Agda-TypeChecking-Positivity.html#t:OccM">OccM</a> a<a href="src/Agda-TypeChecking-Positivity.html#withExtendedOccEnv" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:getOccurrences" class="def">getOccurrences</a> :: <a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> a =&gt; [<a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Agda-TypeChecking-Positivity.html#t:Item">Item</a>] -&gt; a -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a><a href="src/Agda-TypeChecking-Positivity.html#getOccurrences" class="link">Source</a></p><div class="doc"><p>Running the monad
</p></div></div><div class="top"><p class="src"><span class="keyword">class</span>  <a name="t:ComputeOccurrences" class="def">ComputeOccurrences</a> a  <span class="keyword">where</span><a href="src/Agda-TypeChecking-Positivity.html#ComputeOccurrences" class="link">Source</a></p><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:occurrences" class="def">occurrences</a> :: a -&gt; <a href="Agda-TypeChecking-Positivity.html#t:OccM">OccM</a> <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a><a href="src/Agda-TypeChecking-Positivity.html#occurrences" class="link">Source</a></p></div><div class="subs instances"><p id="control.i:ComputeOccurrences" class="caption collapser" onclick="toggleSection('i:ComputeOccurrences')">Instances</p><div id="section.i:ComputeOccurrences" class="show"><table><tr><td class="src"><a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> <a href="Agda-Syntax-Internal.html#t:Clause">Clause</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> <a href="Agda-Syntax-Internal.html#t:LevelAtom">LevelAtom</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> <a href="Agda-Syntax-Internal.html#t:PlusLevel">PlusLevel</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> <a href="Agda-Syntax-Internal.html#t:Level">Level</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> <a href="Agda-Syntax-Internal.html#t:Type">Type</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> <a href="Agda-Syntax-Internal.html#t:Term">Term</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> a =&gt; <a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> [a]</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> a =&gt; <a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> (<a href="Agda-Syntax-Common.html#t:Arg">Arg</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> a =&gt; <a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> (<a href="Agda-Syntax-Common.html#t:Dom">Dom</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> a =&gt; <a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> (<a href="Agda-Syntax-Internal.html#t:Tele">Tele</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> a =&gt; <a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> (<a href="Agda-Syntax-Internal.html#t:Abs">Abs</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> a, <a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> b) =&gt; <a href="Agda-TypeChecking-Positivity.html#t:ComputeOccurrences">ComputeOccurrences</a> (a, b)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:computeOccurrences" class="def">computeOccurrences</a> :: <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> <a href="Agda-TypeChecking-Positivity.html#t:Occurrences">Occurrences</a><a href="src/Agda-TypeChecking-Positivity.html#computeOccurrences" class="link">Source</a></p><div class="doc"><p>Compute the occurrences in a given definition.
</p></div></div><div class="top"><p class="src"><a name="v:etaExpandClause" class="def">etaExpandClause</a> :: <a href="Agda-Syntax-Common.html#t:Nat">Nat</a> -&gt; <a href="Agda-Syntax-Internal.html#t:Clause">Clause</a> -&gt; <a href="Agda-Syntax-Internal.html#t:Clause">Clause</a><a href="src/Agda-TypeChecking-Positivity.html#etaExpandClause" class="link">Source</a></p><div class="doc"><p>Eta expand a clause to have the given number of variables.
   Warning: doesn't update telescope or permutation!
   This is used instead of special treatment of lambdas
   (which was unsound: issue 121)
</p></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Node" class="def">Node</a>  <a href="src/Agda-TypeChecking-Positivity.html#Node" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:DefNode" class="def">DefNode</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:ArgNode" class="def">ArgNode</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> <a href="Agda-Syntax-Common.html#t:Nat">Nat</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:Node" class="caption collapser" onclick="toggleSection('i:Node')">Instances</p><div id="section.i:Node" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Agda-TypeChecking-Positivity.html#t:Node">Node</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Ord.html#t:Ord">Ord</a> <a href="Agda-TypeChecking-Positivity.html#t:Node">Node</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="Agda-TypeChecking-Positivity.html#t:Node">Node</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-Pretty.html#t:PrettyTCM">PrettyTCM</a> <a href="Agda-TypeChecking-Positivity.html#t:Node">Node</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Edge" class="def">Edge</a>  <a href="src/Agda-TypeChecking-Positivity.html#Edge" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Edge" class="def">Edge</a> <a href="Agda-TypeChecking-Monad-Base.html#t:Occurrence">Occurrence</a> <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:Edge" class="caption collapser" onclick="toggleSection('i:Edge')">Instances</p><div id="section.i:Edge" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="Agda-TypeChecking-Positivity.html#t:Edge">Edge</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-Utils-SemiRing.html#t:SemiRing">SemiRing</a> <a href="Agda-TypeChecking-Positivity.html#t:Edge">Edge</a></td><td class="doc"><p>These operations form a semiring if we quotient by the relation
 &quot;the <code><a href="Agda-TypeChecking-Monad-Base.html#t:Occurrence">Occurrence</a></code> components are equal&quot;.
</p></td></tr><tr><td class="src"><a href="Agda-TypeChecking-Pretty.html#t:PrettyTCM">PrettyTCM</a> n =&gt; <a href="Agda-TypeChecking-Pretty.html#t:PrettyTCM">PrettyTCM</a> (n, <a href="Agda-TypeChecking-Positivity.html#t:Edge">Edge</a>)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:buildOccurrenceGraph" class="def">buildOccurrenceGraph</a> :: <a href="/usr/share/doc/ghc/html/libraries/containers-0.4.2.1/Data-Set.html#t:Set">Set</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> (<a href="Agda-Utils-Graph.html#t:Graph">Graph</a> <a href="Agda-TypeChecking-Positivity.html#t:Node">Node</a> <a href="Agda-TypeChecking-Positivity.html#t:Edge">Edge</a>)<a href="src/Agda-TypeChecking-Positivity.html#buildOccurrenceGraph" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:computeEdge" class="def">computeEdge</a> :: <a href="/usr/share/doc/ghc/html/libraries/containers-0.4.2.1/Data-Set.html#t:Set">Set</a> <a href="Agda-Syntax-Abstract-Name.html#t:QName">QName</a> -&gt; <a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> (<a href="Agda-TypeChecking-Positivity.html#t:Node">Node</a>, <a href="Agda-TypeChecking-Positivity.html#t:Edge">Edge</a>)<a href="src/Agda-TypeChecking-Positivity.html#computeEdge" class="link">Source</a></p><div class="doc"><p>Given an <code><a href="Agda-TypeChecking-Positivity.html#t:OccursWhere">OccursWhere</a></code> computes the target node and an <code><a href="Agda-TypeChecking-Positivity.html#t:Edge">Edge</a></code>. The first
   argument is the set of names in the current mutual block.
</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>