-- Copyright (c) 2014 Microsoft Corporation. All rights reserved.
-- Released under Apache 2.0 license as described in the file LICENSE.
-- Author: Leonardo de Moura, Jeremy Avigad

-- general_notation
-- ================

-- General operations
-- ------------------

notation `assume` binders `,` r:(scoped f, f) := r
notation `take`   binders `,` r:(scoped f, f) := r


-- Global declarations of right binding strength
-- ---------------------------------------------

-- If a module reassigns these, it will be incompatible with other modules that adhere to these
-- conventions.

-- ### Logical operations and relations

precedence `¬`:40
precedence `/\`:35    -- infixr
precedence `∧`:35     -- infixr
precedence `\/`:30    -- infixr
precedence `∨`:30     -- infixr
precedence `<->`:25
precedence `↔`:25

precedence `=`:50
precedence `≠`:50

precedence `≈`:50      -- used for path in hott
precedence `∼`:50

precedence `⁻¹`:100
precedence `⬝`:75      -- infixr
precedence `▸`:75      -- infixr

-- ### types and type constructors

precedence `ℕ`:max
precedence `ℤ`:max

precedence `⊎`:25      -- infixr
precedence `×`:30      -- infixr

-- ### arithmetic operations

precedence `+`:65      -- infixl
precedence `-`:65      -- infixl; for negation, follow by rbp 100
precedence `*`:70      -- infixl
precedence `div`:70    -- infixl
precedence `mod`:70    -- infixl

precedence `<=`:50
precedence `≤`:50
precedence `<`:50
precedence `>=`:50
precedence `≥`:50
precedence `>`:50

-- ### boolean operations

precedence `&&`:70     -- infixl
precedence `||`:65     -- infixl
precedence `!`:85      -- boolean negation, follow by rbp 100

-- ### set operations

precedence `∈`:50
precedence `∅`:max
precedence `∩`:70
precedence `∪`:65

-- ### other symbols

precedence `|`:55     -- used for absolute value, subtypes, divisibility
precedence `++`:65    -- list append
precedence `::`:65    -- list cons
