Sophie

Sophie

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

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.MetaVars.Occurs</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-MetaVars-Occurs.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Agda-TypeChecking-MetaVars-Occurs.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.MetaVars.Occurs</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Getting rid of flexible occurrences
</a></li></ul></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:modifyOccursCheckDefs">modifyOccursCheckDefs</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="/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:initOccursCheck">initOccursCheck</a> :: <a href="Agda-TypeChecking-Monad-Base.html#t:MetaVariable">MetaVariable</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:defNeedsChecking">defNeedsChecking</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/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:tallyDef">tallyDef</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"><span class="keyword">data</span>  <a href="#t:OccursCtx">OccursCtx</a> <ul class="subs"><li>= <a href="#v:Flex">Flex</a>  </li><li>| <a href="#v:Rigid">Rigid</a>  </li><li>| <a href="#v:StronglyRigid">StronglyRigid</a>  </li><li>| <a href="#v:Top">Top</a>  </li><li>| <a href="#v:Irrel">Irrel</a>  </li></ul></li><li class="src short"><span class="keyword">data</span>  <a href="#t:UnfoldStrategy">UnfoldStrategy</a> <ul class="subs"><li>= <a href="#v:YesUnfold">YesUnfold</a>  </li><li>| <a href="#v:NoUnfold">NoUnfold</a>  </li></ul></li><li class="src short"><a href="#v:defArgs">defArgs</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:UnfoldStrategy">UnfoldStrategy</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a></li><li class="src short"><a href="#v:unfold">unfold</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:UnfoldStrategy">UnfoldStrategy</a> -&gt; <a href="Agda-Syntax-Internal.html#t:Term">Term</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> (<a href="Agda-Syntax-Internal.html#t:Blocked">Blocked</a> <a href="Agda-Syntax-Internal.html#t:Term">Term</a>)</li><li class="src short"><a href="#v:leaveTop">leaveTop</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a></li><li class="src short"><a href="#v:weakly">weakly</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a></li><li class="src short"><a href="#v:strongly">strongly</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a></li><li class="src short"><a href="#v:abort">abort</a> ::  <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TypeError">TypeError</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> a</li><li class="src short"><span class="keyword">type</span> <a href="#t:Vars">Vars</a> = ([<a href="Agda-Syntax-Common.html#t:Nat">Nat</a>], [<a href="Agda-Syntax-Common.html#t:Nat">Nat</a>])</li><li class="src short"><a href="#v:goIrrelevant">goIrrelevant</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a></li><li class="src short"><a href="#v:allowedVar">allowedVar</a> :: <a href="Agda-Syntax-Common.html#t:Nat">Nat</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:takeRelevant">takeRelevant</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a> -&gt; [<a href="Agda-Syntax-Common.html#t:Nat">Nat</a>]</li><li class="src short"><a href="#v:liftUnderAbs">liftUnderAbs</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a></li><li class="src short"><span class="keyword">class</span>  <a href="#t:Occurs">Occurs</a> t  <span class="keyword">where</span><ul class="subs"><li><a href="#v:occurs">occurs</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:UnfoldStrategy">UnfoldStrategy</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a> -&gt; <a href="Agda-Syntax-Internal.html#t:MetaId">MetaId</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a> -&gt; t -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> t</li><li><a href="#v:metaOccurs">metaOccurs</a> :: <a href="Agda-Syntax-Internal.html#t:MetaId">MetaId</a> -&gt; t -&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></ul></li><li class="src short"><a href="#v:occursCheck">occursCheck</a> :: <a href="Agda-Syntax-Internal.html#t:MetaId">MetaId</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a> -&gt; <a href="Agda-Syntax-Internal.html#t:Term">Term</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> <a href="Agda-Syntax-Internal.html#t:Term">Term</a></li><li class="src short"><a href="#v:prune">prune</a> :: <a href="Agda-Syntax-Internal.html#t:MetaId">MetaId</a> -&gt; <a href="Agda-Syntax-Internal.html#t:Args">Args</a> -&gt; [<a href="Agda-Syntax-Common.html#t:Nat">Nat</a>] -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:PruneResult">PruneResult</a></li><li class="src short"><a href="#v:hasBadRigid">hasBadRigid</a> :: [<a href="Agda-Syntax-Common.html#t:Nat">Nat</a>] -&gt; <a href="Agda-Syntax-Internal.html#t:Term">Term</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:rigidVarsNotContainedIn">rigidVarsNotContainedIn</a> :: <a href="Agda-TypeChecking-Free.html#t:Free">Free</a> a =&gt; a -&gt; [<a href="Agda-Syntax-Common.html#t:Nat">Nat</a>] -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><span class="keyword">data</span>  <a href="#t:PruneResult">PruneResult</a> <ul class="subs"><li>= <a href="#v:NothingToPrune">NothingToPrune</a>  </li><li>| <a href="#v:PrunedNothing">PrunedNothing</a>  </li><li>| <a href="#v:PrunedSomething">PrunedSomething</a>  </li><li>| <a href="#v:PrunedEverything">PrunedEverything</a>  </li></ul></li><li class="src short"><a href="#v:killArgs">killArgs</a> :: [<a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>] -&gt; <a href="Agda-Syntax-Internal.html#t:MetaId">MetaId</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:PruneResult">PruneResult</a></li><li class="src short"><a href="#v:killedType">killedType</a> :: [(<a href="Agda-Syntax-Common.html#t:Dom">Dom</a> (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-String.html#t:String">String</a>, <a href="Agda-Syntax-Internal.html#t:Type">Type</a>), <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>)] -&gt; <a href="Agda-Syntax-Internal.html#t:Type">Type</a> -&gt; ([<a href="Agda-Syntax-Common.html#t:Arg">Arg</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>], <a href="Agda-Syntax-Internal.html#t:Type">Type</a>)</li><li class="src short"><a href="#v:performKill">performKill</a> :: [<a href="Agda-Syntax-Common.html#t:Arg">Arg</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>] -&gt; <a href="Agda-Syntax-Internal.html#t:MetaId">MetaId</a> -&gt; <a href="Agda-Syntax-Internal.html#t:Type">Type</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></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:modifyOccursCheckDefs" class="def">modifyOccursCheckDefs</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="/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-MetaVars-Occurs.html#modifyOccursCheckDefs" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:initOccursCheck" class="def">initOccursCheck</a> :: <a href="Agda-TypeChecking-Monad-Base.html#t:MetaVariable">MetaVariable</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-MetaVars-Occurs.html#initOccursCheck" class="link">Source</a></p><div class="doc"><p>Set the names of definitions to be looked at
   to the defs in the current mutual block.
</p></div></div><div class="top"><p class="src"><a name="v:defNeedsChecking" class="def">defNeedsChecking</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/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a><a href="src/Agda-TypeChecking-MetaVars-Occurs.html#defNeedsChecking" class="link">Source</a></p><div class="doc"><p>Is a def in the list of stuff to be checked?
</p></div></div><div class="top"><p class="src"><a name="v:tallyDef" class="def">tallyDef</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-MetaVars-Occurs.html#tallyDef" class="link">Source</a></p><div class="doc"><p>Remove a def from the list of defs to be looked at.
</p></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:OccursCtx" class="def">OccursCtx</a>  <a href="src/Agda-TypeChecking-MetaVars-Occurs.html#OccursCtx" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Flex" class="def">Flex</a></td><td class="doc"><p>we are in arguments of a meta
</p></td></tr><tr><td class="src"><a name="v:Rigid" class="def">Rigid</a></td><td class="doc"><p>we are not in arguments of a meta but a bound var
</p></td></tr><tr><td class="src"><a name="v:StronglyRigid" class="def">StronglyRigid</a></td><td class="doc"><p>we are at the start or in the arguments of a constructor
</p></td></tr><tr><td class="src"><a name="v:Top" class="def">Top</a></td><td class="doc"><p>we are at the term root (this turns into <code>StronglyRigid</code>)
</p></td></tr><tr><td class="src"><a name="v:Irrel" class="def">Irrel</a></td><td class="doc"><p>we are in an irrelevant argument
</p></td></tr></table></div><div class="subs instances"><p id="control.i:OccursCtx" class="caption collapser" onclick="toggleSection('i:OccursCtx')">Instances</p><div id="section.i:OccursCtx" 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-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</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-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</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:UnfoldStrategy" class="def">UnfoldStrategy</a>  <a href="src/Agda-TypeChecking-MetaVars-Occurs.html#UnfoldStrategy" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:YesUnfold" class="def">YesUnfold</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:NoUnfold" class="def">NoUnfold</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:UnfoldStrategy" class="caption collapser" onclick="toggleSection('i:UnfoldStrategy')">Instances</p><div id="section.i:UnfoldStrategy" 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-MetaVars-Occurs.html#t:UnfoldStrategy">UnfoldStrategy</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-MetaVars-Occurs.html#t:UnfoldStrategy">UnfoldStrategy</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:defArgs" class="def">defArgs</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:UnfoldStrategy">UnfoldStrategy</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a><a href="src/Agda-TypeChecking-MetaVars-Occurs.html#defArgs" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:unfold" class="def">unfold</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:UnfoldStrategy">UnfoldStrategy</a> -&gt; <a href="Agda-Syntax-Internal.html#t:Term">Term</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> (<a href="Agda-Syntax-Internal.html#t:Blocked">Blocked</a> <a href="Agda-Syntax-Internal.html#t:Term">Term</a>)<a href="src/Agda-TypeChecking-MetaVars-Occurs.html#unfold" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:leaveTop" class="def">leaveTop</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a><a href="src/Agda-TypeChecking-MetaVars-Occurs.html#leaveTop" class="link">Source</a></p><div class="doc"><p>Leave the top position.
</p></div></div><div class="top"><p class="src"><a name="v:weakly" class="def">weakly</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a><a href="src/Agda-TypeChecking-MetaVars-Occurs.html#weakly" class="link">Source</a></p><div class="doc"><p>Leave the strongly rigid position.
</p></div></div><div class="top"><p class="src"><a name="v:strongly" class="def">strongly</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a><a href="src/Agda-TypeChecking-MetaVars-Occurs.html#strongly" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:abort" class="def">abort</a> ::  <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TypeError">TypeError</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> a<a href="src/Agda-TypeChecking-MetaVars-Occurs.html#abort" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Vars" class="def">Vars</a> = ([<a href="Agda-Syntax-Common.html#t:Nat">Nat</a>], [<a href="Agda-Syntax-Common.html#t:Nat">Nat</a>])<a href="src/Agda-TypeChecking-MetaVars-Occurs.html#Vars" class="link">Source</a></p><div class="doc"><p>Distinguish relevant and irrelevant variables in occurs check.
</p></div></div><div class="top"><p class="src"><a name="v:goIrrelevant" class="def">goIrrelevant</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a><a href="src/Agda-TypeChecking-MetaVars-Occurs.html#goIrrelevant" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:allowedVar" class="def">allowedVar</a> :: <a href="Agda-Syntax-Common.html#t:Nat">Nat</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a><a href="src/Agda-TypeChecking-MetaVars-Occurs.html#allowedVar" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:takeRelevant" class="def">takeRelevant</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a> -&gt; [<a href="Agda-Syntax-Common.html#t:Nat">Nat</a>]<a href="src/Agda-TypeChecking-MetaVars-Occurs.html#takeRelevant" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:liftUnderAbs" class="def">liftUnderAbs</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a><a href="src/Agda-TypeChecking-MetaVars-Occurs.html#liftUnderAbs" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">class</span>  <a name="t:Occurs" class="def">Occurs</a> t  <span class="keyword">where</span><a href="src/Agda-TypeChecking-MetaVars-Occurs.html#Occurs" class="link">Source</a></p><div class="doc"><p>Extended occurs check.
</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:occurs" class="def">occurs</a> :: <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:UnfoldStrategy">UnfoldStrategy</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:OccursCtx">OccursCtx</a> -&gt; <a href="Agda-Syntax-Internal.html#t:MetaId">MetaId</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a> -&gt; t -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> t<a href="src/Agda-TypeChecking-MetaVars-Occurs.html#occurs" class="link">Source</a></p><p class="src"><a name="v:metaOccurs" class="def">metaOccurs</a> :: <a href="Agda-Syntax-Internal.html#t:MetaId">MetaId</a> -&gt; t -&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-MetaVars-Occurs.html#metaOccurs" class="link">Source</a></p></div><div class="subs instances"><p id="control.i:Occurs" class="caption collapser" onclick="toggleSection('i:Occurs')">Instances</p><div id="section.i:Occurs" class="show"><table><tr><td class="src"><a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Occurs">Occurs</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 href="Agda-TypeChecking-MetaVars-Occurs.html#t:Occurs">Occurs</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-MetaVars-Occurs.html#t:Occurs">Occurs</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-MetaVars-Occurs.html#t:Occurs">Occurs</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-MetaVars-Occurs.html#t:Occurs">Occurs</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-MetaVars-Occurs.html#t:Occurs">Occurs</a> <a href="Agda-Syntax-Internal.html#t:Sort">Sort</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Occurs">Occurs</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-MetaVars-Occurs.html#t:Occurs">Occurs</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-MetaVars-Occurs.html#t:Occurs">Occurs</a> <a href="Agda-TypeChecking-Monad-Base.html#t:Defn">Defn</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Occurs">Occurs</a> a =&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Occurs">Occurs</a> [a]</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Occurs">Occurs</a> a =&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Occurs">Occurs</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-MetaVars-Occurs.html#t:Occurs">Occurs</a> a =&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Occurs">Occurs</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-MetaVars-Occurs.html#t:Occurs">Occurs</a> a, <a href="Agda-TypeChecking-Substitute.html#t:Subst">Subst</a> a) =&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Occurs">Occurs</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-MetaVars-Occurs.html#t:Occurs">Occurs</a> a, <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Occurs">Occurs</a> b) =&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Occurs">Occurs</a> (a, b)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:occursCheck" class="def">occursCheck</a> :: <a href="Agda-Syntax-Internal.html#t:MetaId">MetaId</a> -&gt; <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:Vars">Vars</a> -&gt; <a href="Agda-Syntax-Internal.html#t:Term">Term</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> <a href="Agda-Syntax-Internal.html#t:Term">Term</a><a href="src/Agda-TypeChecking-MetaVars-Occurs.html#occursCheck" class="link">Source</a></p><div class="doc"><p>When assigning <code>m xs := v</code>, check that <code>m</code> does not occur in <code>v</code>
   and that the free variables of <code>v</code> are contained in <code>xs</code>.
</p></div></div><h1 id="g:1">Getting rid of flexible occurrences
</h1><div class="top"><p class="src"><a name="v:prune" class="def">prune</a> :: <a href="Agda-Syntax-Internal.html#t:MetaId">MetaId</a> -&gt; <a href="Agda-Syntax-Internal.html#t:Args">Args</a> -&gt; [<a href="Agda-Syntax-Common.html#t:Nat">Nat</a>] -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:PruneResult">PruneResult</a><a href="src/Agda-TypeChecking-MetaVars-Occurs.html#prune" class="link">Source</a></p><div class="doc"><p><code>prune m' vs xs</code> attempts to remove all arguments from <code>vs</code> whose
   free variables are not contained in <code>xs</code>.
   If successful, <code>m'</code> is solved by the new, pruned meta variable and we
   return <code>True</code> else <code>False</code>.
</p></div></div><div class="top"><p class="src"><a name="v:hasBadRigid" class="def">hasBadRigid</a> :: [<a href="Agda-Syntax-Common.html#t:Nat">Nat</a>] -&gt; <a href="Agda-Syntax-Internal.html#t:Term">Term</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a><a href="src/Agda-TypeChecking-MetaVars-Occurs.html#hasBadRigid" class="link">Source</a></p><div class="doc"><p><code>hasBadRigid xs v = True</code> iff one of the rigid variables in <code>v</code> is not in <code>xs</code>.
   Actually we can only prune if a bad variable is in the head. See issue 458.
   Or in a non-eliminateable position (see succeed/PruningNonMillerPattern).
</p></div></div><div class="top"><p class="src"><a name="v:rigidVarsNotContainedIn" class="def">rigidVarsNotContainedIn</a> :: <a href="Agda-TypeChecking-Free.html#t:Free">Free</a> a =&gt; a -&gt; [<a href="Agda-Syntax-Common.html#t:Nat">Nat</a>] -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a><a href="src/Agda-TypeChecking-MetaVars-Occurs.html#rigidVarsNotContainedIn" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:PruneResult" class="def">PruneResult</a>  <a href="src/Agda-TypeChecking-MetaVars-Occurs.html#PruneResult" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:NothingToPrune" class="def">NothingToPrune</a></td><td class="doc"><p>the kill list is empty or only <code>False</code>s
</p></td></tr><tr><td class="src"><a name="v:PrunedNothing" class="def">PrunedNothing</a></td><td class="doc"><p>there is no possible kill (because of type dep.)
</p></td></tr><tr><td class="src"><a name="v:PrunedSomething" class="def">PrunedSomething</a></td><td class="doc"><p>managed to kill some args in the list
</p></td></tr><tr><td class="src"><a name="v:PrunedEverything" class="def">PrunedEverything</a></td><td class="doc"><p>all prescribed kills where performed
</p></td></tr></table></div><div class="subs instances"><p id="control.i:PruneResult" class="caption collapser" onclick="toggleSection('i:PruneResult')">Instances</p><div id="section.i:PruneResult" 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-MetaVars-Occurs.html#t:PruneResult">PruneResult</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-MetaVars-Occurs.html#t:PruneResult">PruneResult</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:killArgs" class="def">killArgs</a> :: [<a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>] -&gt; <a href="Agda-Syntax-Internal.html#t:MetaId">MetaId</a> -&gt; <a href="Agda-TypeChecking-Monad-Base.html#t:TCM">TCM</a> <a href="Agda-TypeChecking-MetaVars-Occurs.html#t:PruneResult">PruneResult</a><a href="src/Agda-TypeChecking-MetaVars-Occurs.html#killArgs" class="link">Source</a></p><div class="doc"><p><code>killArgs [k1,...,kn] X</code> prunes argument <code>i</code> from metavar <code>X</code> if <code>ki==True</code>.
   Pruning is carried out whenever &gt; 0 arguments can be pruned.
   <code>True</code> is only returned if all arguments could be pruned.
</p></div></div><div class="top"><p class="src"><a name="v:killedType" class="def">killedType</a> :: [(<a href="Agda-Syntax-Common.html#t:Dom">Dom</a> (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-String.html#t:String">String</a>, <a href="Agda-Syntax-Internal.html#t:Type">Type</a>), <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>)] -&gt; <a href="Agda-Syntax-Internal.html#t:Type">Type</a> -&gt; ([<a href="Agda-Syntax-Common.html#t:Arg">Arg</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>], <a href="Agda-Syntax-Internal.html#t:Type">Type</a>)<a href="src/Agda-TypeChecking-MetaVars-Occurs.html#killedType" class="link">Source</a></p><div class="doc"><p><code>killedType [((x1,a1),k1)..((xn,an),kn)] b = ([k'1..k'n],t')</code>
   (ignoring <code>Dom</code>).  Let <code>t' = (xs:as) -&gt; b</code>.
   Invariant: <code>k'i == True</code> iff <code>ki == True</code> and pruning the <code>i</code>th argument from
   type <code>b</code> is possible without creating unbound variables.
   <code>t'</code> is type <code>t</code> after pruning all <code>k'i==True</code>.
</p></div></div><div class="top"><p class="src"><a name="v:performKill" class="def">performKill</a> :: [<a href="Agda-Syntax-Common.html#t:Arg">Arg</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>] -&gt; <a href="Agda-Syntax-Internal.html#t:MetaId">MetaId</a> -&gt; <a href="Agda-Syntax-Internal.html#t:Type">Type</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-MetaVars-Occurs.html#performKill" class="link">Source</a></p></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>