Agda-2.6.20240714: A dependently typed functional programming language and proof assistant
Safe HaskellNone
LanguageHaskell2010

Agda.TypeChecking.Constraints

Synopsis

Documentation

stealConstraintsTCM :: ProblemId -> TCM () Source #

Add all constraints belonging to the given problem to the current problem(s).

noConstraints :: (MonadConstraint m, MonadWarning m, MonadError TCErr m, MonadFresh ProblemId m) => m a -> m a Source #

Don't allow the argument to produce any blocking constraints.

WARNING: this does not mean that the given computation cannot constrain the solution space further. It can well do so, by solving metas.

reallyNoConstraints :: (MonadConstraint m, MonadWarning m, MonadError TCErr m, MonadFresh ProblemId m) => m a -> m a Source #

As noConstraints but also fail for non-blocking constraints.

noConstraints' :: (MonadConstraint m, MonadWarning m, MonadError TCErr m, MonadFresh ProblemId m) => Bool -> m a -> m a Source #

nonConstraining :: (HasOptions m, MonadConstraint m, MonadDebug m, MonadError TCErr m, MonadFresh ProblemId m, MonadTCEnv m, MonadWarning m) => m a -> m a Source #

Run a computation that should succeeds without constraining the solution space, i.e., not add any information about meta-variables.

newProblem :: (MonadFresh ProblemId m, MonadConstraint m) => m a -> m (ProblemId, a) Source #

Create a fresh problem for the given action.

ifNoConstraints :: TCM a -> (a -> TCM b) -> (ProblemId -> a -> TCM b) -> TCM b Source #

ifNoConstraints_ :: TCM () -> TCM a -> (ProblemId -> TCM a) -> TCM a Source #

guardConstraint :: Constraint -> TCM () -> TCM () Source #

guardConstraint c blocker tries to solve blocker first. If successful without constraints, it moves on to solve c, otherwise it adds a c to the constraint pool, blocked by the problem generated by blocker.

whenConstraints :: TCM () -> TCM () -> TCM () Source #

wakeupConstraints :: MonadMetaSolver m => MetaId -> m () Source #

Wake up the constraints depending on the given meta.

wakeupConstraints_ :: TCM () Source #

Wake up all constraints not blocked on a problem.

solveSomeAwakeConstraintsTCM :: (ProblemConstraint -> Bool) -> Bool -> TCM () Source #

Solve awake constraints matching the predicate. If the second argument is True solve constraints even if already isSolvingConstraints.

addAndUnblocker :: (PureTCM m, MonadBlock m) => Blocker -> m a -> m a Source #

addOrUnblocker :: (PureTCM m, MonadBlock m) => Blocker -> m a -> m a Source #

withReduced :: (Reduce a, IsMeta a, PureTCM m, MonadBlock m) => a -> (a -> m b) -> m b Source #

Orphan instances