Commit graph

99 commits

Author SHA1 Message Date
Leonardo de Moura
dc5ca99afa fix(library/data/real/basic): unnecessary level of indirection
At real.comm_ring, `add` is `@add real real_has_add`.
This is bad for any tactic (e.g., blast) that only unfolds reducible definitions.
`add` is not reducible. So, the tactic will not be able to establish
that `@add real real_has_add` is definitionally equal to `real.add`.
2016-01-24 13:37:15 -08:00
Leonardo de Moura
66a722ff5a feat(library/unifier): remove "eager delta hack", use is_def_eq when delta-constraint does not have metavariables anymore
The "eager-delta hack" was added to minimize problems in the interaction
between coercions and delta-constraints.
2016-01-03 12:39:32 -08:00
Leonardo de Moura
f177082c3b refactor(*): normalize metaclass names
@avigad and @fpvandoorn, I changed the metaclasses names. They
were not uniform:
- The plural was used in some cases (e.g., [coercions]).
- In other cases a cryptic name was used (e.g., [brs]).

Now, I tried to use the attribute name as the metaclass name whenever
possible. For example, we write

   definition foo [coercion] ...
   definition bla [forward] ...

and

  open [coercion] nat
  open [forward] nat

It is easier to remember and is uniform.
2015-12-28 10:39:15 -08:00
Sebastian Ullrich
2185ee7e95 feat(library/tactic): make let tactic transparent, introduce new opaque note tactic
The new let tactic is semantically equivalent to let terms, while `note`
preserves its old opaque behavior.
2015-12-14 10:14:02 -08:00
Leonardo de Moura
1b80dc0df6 feat(library/data/real/basic): improve performance 2015-12-09 10:57:16 -08:00
Leonardo de Moura
b94e31a72c refactor(library): remove algebra namespace 2015-12-05 23:50:01 -08:00
Leonardo de Moura
5ceac83b6a feat(frontends/lean/elaborator): restrict the number of places where coercions are considered
We do not consider coercions around meta-variables anymore.
2015-11-11 12:37:19 -08:00
Jeremy Avigad
697df0e68c refactor(library/*): use type classes for div and mod 2015-11-08 14:04:59 -08:00
Jeremy Avigad
b1719c3823 refactor(library/real/*): protect theorems 2015-11-08 14:04:59 -08:00
Jeremy Avigad
9e5a27dc77 refactor(library/{pnat,rat,real}/*): protect theorems in pnat and rat 2015-11-08 14:04:59 -08:00
Leonardo de Moura
6df31d3406 refactor(library/data/nat/basic): mark some theorems as protected to avoid overloading 2015-11-08 14:04:56 -08:00
Leonardo de Moura
6779cb4fc6 refactor(library/data/real/division): make sure \sy and / notation for reals is available even when we do not open the namespace algebra 2015-11-08 14:04:56 -08:00
Leonardo de Moura
fa937395d9 fix(library/data/real): minor adjustments 2015-11-08 14:04:55 -08:00
Rob Lewis
670ac6ae19 fix(real/order): remove sorry 2015-11-08 14:04:55 -08:00
Rob Lewis
06c1a97259 feat(library/real): fix real.complete 2015-11-08 14:04:55 -08:00
Rob Lewis
0d0df0417d fix(library/real): fix real.division 2015-11-08 14:04:55 -08:00
Rob Lewis
f4e1f3bb1b feat(library/data/real): fix real.order 2015-11-08 14:04:55 -08:00
Leonardo de Moura
e8454fad26 fix(library/data/real/basic): remove obsolete notation declarations 2015-11-08 14:04:55 -08:00
Jeremy Avigad
7f88e9ad33 fix(library/data/real,library/theories/group_theory): group theory and real/basic 2015-11-08 14:04:55 -08:00
Leonardo de Moura
724aacb2c1 fix(library): remove "-[notations]" hack at "open -[notations] algebra" 2015-11-08 14:04:55 -08:00
Leonardo de Moura
843e95ade6 fix(library/data/real/basic): some real theorems 2015-11-08 14:04:55 -08:00
Leonardo de Moura
744d1cba3d feat(library,hott,frontends/lean): avoid keywords with hyphen 2015-11-08 14:04:54 -08:00
Sebastian Ullrich
d1b5031dbd feat(library): add some spacing hints 2015-09-30 17:36:32 -07:00
Rob Lewis
ee257a7c6c chore(library/data/{nat,real}): rename and move iterate function 2015-09-16 08:28:11 -07:00
Rob Lewis
f5dcb1e0a9 feat(library/algebra): add missing theorems to algebra library 2015-09-16 08:28:11 -07:00
Rob Lewis
4312f1e54b chore(library/data/real): clean and rename theorems in completeness proofs 2015-09-16 08:28:11 -07:00
Jeremy Avigad
b48b33c412 feat(library/data/real/division): add useful rules for proving equalities 2015-09-12 21:46:09 -04:00
Jeremy Avigad
780c950414 refactor(library/data/int/order): use 'exists' instead of 'ex', 'least' instead of 'smallest', etc. 2015-09-12 21:46:09 -04:00
Jeremy Avigad
1affeec3c6 fix(library/algebra/ordered_filed): rename theorems 2015-09-12 21:46:09 -04:00
Jeremy Avigad
8db9afbf1c feat/refactor(data/real/complete): add another archimedean property, rename theorems 2015-09-12 21:46:09 -04:00
Jeremy Avigad
d9e166f77f feat/refactor(library/data/real/*): add / improve casts to real from nat, int, rat 2015-09-12 21:46:09 -04:00
Jeremy Avigad
de83a68667 refactor(library/data/{int,rat}/*): clean up casts between nat, int, and rat 2015-09-12 21:46:09 -04:00
Rob Lewis
8d1f449491 refactor(library/data/real): move and rename theorems 2015-09-11 08:52:53 -07:00
Jeremy Avigad
7d72c9b6b5 refactor(library/algebra/{field,ordered_field}, library/*): more renaming, setting implicit arguments
Many theorems for division rings and fields have stronger versions for discrete fields, where we
assume x / 0 = 0. Before, we used primes to distinguish the versions, but that has the downside
that e.g. for rat and real, all the theorems are equally present. Now, I qualified the weaker ones
with division_ring.foo or field.foo. Maybe that is not ideal, but let's try it.

I also set implicit arguments with the following convention: an argument to a theorem should be
explicit unless it can be inferred from the other arguments and hypotheses.
2015-09-01 14:47:19 -07:00
Jeremy Avigad
93c2d1e9d0 refactor(library/algebra/ordered_field): rename theorems to maintain consistency with other parts of the library 2015-09-01 14:47:19 -07:00
Jeremy Avigad
92af727daf fix(library/data/real/{basic,division,order}: use notation for 0 and 1
These changes were needed because e.g. real.add_zero was "x + zero = x", and rewrite
would not match it to a goal "t + 0".

The fix was a lot harder than I expected. At first, migrate failed with resource
errors. In the end, what worked was this: I defined the coercion from num to real
directly (rather than infer num -> nat -> int -> rat -> real).

I still don't understand what the issues are, though. There are subtle issues with
numerals and coercions and migrate.

(We are not alone. Isabelle also suffers from the fact that there are too many
"zero"s and "one"s.)
2015-09-01 14:47:19 -07:00
Leonardo de Moura
f74d7fc266 refactor(library/data/real/basic): add extra step to help unifier 2015-08-31 16:56:05 -10:00
Leonardo de Moura
ea05ce7fe9 fix(library/data/real/order): mark '2' as local notation 2015-08-31 15:03:18 -10:00
Jeremy Avigad
7dda69fec7 feat/refactor(library/theories/number_theory/irrational_roots,library/*): show nth roots irrational, and add lots of missing theorems 2015-08-16 23:23:23 -04:00
Leonardo de Moura
d2eb99bf11 refactor(library/logic): move logic/choice.lean to init/classical.lean
choice axiom is now in the classical namespace.
2015-08-12 18:37:33 -07:00
Leonardo de Moura
cb9830beaf refactor(library/logic/choice): move prop_decidable instance into namespace 'classical' 2015-08-12 17:06:15 -07:00
Jeremy Avigad
4b39400439 feat(library/data/{int,rat,real}/bigops): add bigops for int, rat, real
Because migrate does not handle parameters, we have to migrate by hand.
2015-08-08 17:20:23 -04:00
Rob Lewis
11bb342819 style(library/data/real): clean up proofs in basic.lean 2015-08-07 13:30:23 -07:00
Rob Lewis
e004ed8cba feat(library/algebra): add one directional versions of iff theorems 2015-08-03 17:16:18 -04:00
Rob Lewis
78942a0689 fix(library/data/real): fix num -> rat -> real coercion chain 2015-08-03 16:38:42 -04:00
Rob Lewis
4dd4d7b3b8 style(library/data): clean up proofs in pnat and real 2015-08-03 15:02:03 -04:00
Rob Lewis
5c2fe1c3af refactor(real/complete): put limit sequence construction in a section 2015-08-03 11:20:26 -04:00
Rob Lewis
ba2dda08d3 feat(library/data/real): prove infimum property" 2015-08-03 11:16:56 -04:00
Jeremy Avigad
36c7aad6ee fix(library/data/rat/basic): define pow before migrate 2015-08-01 18:23:36 +01:00
Leonardo de Moura
3b742c5d69 refactor(library/data/real/complete): use 'em' instead of 'decidable.em'
It is slightly faster since it avoids type class resolution.
It looks more readable too.
Note that em is not axiom anymore. It is a theorem based on choce.
2015-07-31 10:57:53 -07:00