2014-11-28 12:06:46 +00:00
|
|
|
|
/-
|
|
|
|
|
Copyright (c) 2014 Microsoft Corporation. All rights reserved.
|
|
|
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
|
|
|
Authors: Leonardo de Moura, Jeremy Avigad
|
|
|
|
|
-/
|
2014-12-01 04:34:12 +00:00
|
|
|
|
prelude
|
|
|
|
|
import init.datatypes
|
2014-08-12 00:35:25 +00:00
|
|
|
|
|
|
|
|
|
notation `assume` binders `,` r:(scoped f, f) := r
|
|
|
|
|
notation `take` binders `,` r:(scoped f, f) := r
|
2014-08-22 23:36:47 +00:00
|
|
|
|
|
2014-11-28 12:06:46 +00:00
|
|
|
|
/-
|
|
|
|
|
Global declarations of right binding strength
|
2014-08-22 23:36:47 +00:00
|
|
|
|
|
2014-11-28 12:06:46 +00:00
|
|
|
|
If a module reassigns these, it will be incompatible with other modules that adhere to these
|
|
|
|
|
conventions.
|
2014-08-22 23:36:47 +00:00
|
|
|
|
|
2015-04-22 19:13:34 +00:00
|
|
|
|
When hovering over a symbol, use "C-c C-k" to see how to input it.
|
2014-11-28 12:06:46 +00:00
|
|
|
|
-/
|
|
|
|
|
|
2015-01-26 16:28:13 +00:00
|
|
|
|
definition std.prec.max : num := 1024 -- the strength of application, identifiers, (, [, etc.
|
2014-11-30 02:29:48 +00:00
|
|
|
|
definition std.prec.arrow : num := 25
|
|
|
|
|
|
2015-01-26 16:28:13 +00:00
|
|
|
|
/-
|
|
|
|
|
The next definition is "max + 10". It can be used e.g. for postfix operations that should
|
|
|
|
|
be stronger than application.
|
|
|
|
|
-/
|
|
|
|
|
|
|
|
|
|
definition std.prec.max_plus :=
|
|
|
|
|
num.succ (num.succ (num.succ (num.succ (num.succ (num.succ (num.succ (num.succ (num.succ
|
|
|
|
|
(num.succ std.prec.max)))))))))
|
|
|
|
|
|
|
|
|
|
/- Logical operations and relations -/
|
|
|
|
|
|
2014-10-21 21:08:07 +00:00
|
|
|
|
reserve prefix `¬`:40
|
2015-09-30 15:06:31 +00:00
|
|
|
|
reserve prefix ` ~ `:40
|
|
|
|
|
reserve infixr ` ∧ `:35
|
|
|
|
|
reserve infixr ` /\ `:35
|
|
|
|
|
reserve infixr ` \/ `:30
|
|
|
|
|
reserve infixr ` ∨ `:30
|
|
|
|
|
reserve infix ` <-> `:20
|
|
|
|
|
reserve infix ` ↔ `:20
|
|
|
|
|
reserve infix ` = `:50
|
|
|
|
|
reserve infix ` ≠ `:50
|
|
|
|
|
reserve infix ` ≈ `:50
|
|
|
|
|
reserve infix ` ~ `:50
|
|
|
|
|
reserve infix ` ≡ `:50
|
|
|
|
|
|
|
|
|
|
reserve infixr ` ∘ `:60 -- input with \comp
|
2015-01-26 16:28:13 +00:00
|
|
|
|
reserve postfix `⁻¹`:std.prec.max_plus -- input with \sy or \-1 or \inv
|
|
|
|
|
|
2015-09-30 15:06:31 +00:00
|
|
|
|
reserve infixl ` ⬝ `:75
|
|
|
|
|
reserve infixr ` ▸ `:75
|
|
|
|
|
reserve infixr ` ▹ `:75
|
2014-08-22 23:36:47 +00:00
|
|
|
|
|
2014-11-28 12:06:46 +00:00
|
|
|
|
/- types and type constructors -/
|
2014-08-22 23:36:47 +00:00
|
|
|
|
|
2015-09-30 15:06:31 +00:00
|
|
|
|
reserve infixl ` ⊎ `:25
|
|
|
|
|
reserve infixl ` × `:30
|
2014-08-22 23:36:47 +00:00
|
|
|
|
|
2014-11-28 12:06:46 +00:00
|
|
|
|
/- arithmetic operations -/
|
2014-08-22 23:36:47 +00:00
|
|
|
|
|
2015-09-30 15:06:31 +00:00
|
|
|
|
reserve infixl ` + `:65
|
|
|
|
|
reserve infixl ` - `:65
|
|
|
|
|
reserve infixl ` * `:70
|
|
|
|
|
reserve infixl ` div `:70
|
|
|
|
|
reserve infixl ` mod `:70
|
|
|
|
|
reserve infixl ` / `:70
|
2014-11-14 06:08:20 +00:00
|
|
|
|
reserve prefix `-`:100
|
2015-09-30 15:06:31 +00:00
|
|
|
|
reserve infix ` ^ `:80
|
2014-08-22 23:36:47 +00:00
|
|
|
|
|
2015-09-30 15:06:31 +00:00
|
|
|
|
reserve infix ` <= `:50
|
|
|
|
|
reserve infix ` ≤ `:50
|
|
|
|
|
reserve infix ` < `:50
|
|
|
|
|
reserve infix ` >= `:50
|
|
|
|
|
reserve infix ` ≥ `:50
|
|
|
|
|
reserve infix ` > `:50
|
2014-08-22 23:36:47 +00:00
|
|
|
|
|
2014-11-28 12:06:46 +00:00
|
|
|
|
/- boolean operations -/
|
2014-08-22 23:36:47 +00:00
|
|
|
|
|
2015-09-30 15:06:31 +00:00
|
|
|
|
reserve infixl ` && `:70
|
|
|
|
|
reserve infixl ` || `:65
|
2014-08-22 23:36:47 +00:00
|
|
|
|
|
2014-11-28 12:06:46 +00:00
|
|
|
|
/- set operations -/
|
2014-08-22 23:36:47 +00:00
|
|
|
|
|
2015-09-30 15:06:31 +00:00
|
|
|
|
reserve infix ` ∈ `:50
|
|
|
|
|
reserve infix ` ∉ `:50
|
|
|
|
|
reserve infixl ` ∩ `:70
|
|
|
|
|
reserve infixl ` ∪ `:65
|
|
|
|
|
reserve infix ` ⊆ `:50
|
|
|
|
|
reserve infix ` ⊇ `:50
|
2014-08-22 23:36:47 +00:00
|
|
|
|
|
2014-11-28 12:06:46 +00:00
|
|
|
|
/- other symbols -/
|
|
|
|
|
|
2015-09-30 15:06:31 +00:00
|
|
|
|
reserve infix ` ∣ `:50
|
|
|
|
|
reserve infixl ` ++ `:65
|
|
|
|
|
reserve infixr ` :: `:65
|