lean4-htt/library/init/data
Sebastian Ullrich 8f55ec4c50 fix(init/core): remove out_param from has_pow
With the current elaboration scheme, out_params and coercions do not mix well,
as evidenced by the following example by @digama:

```
variables {α : Type*} [group α]
def gpow : α → ℤ → α := sorry
instance group.has_pow : has_pow α ℤ := ⟨gpow⟩

example (a : α) : a ^ 0 = 1 := sorry -- failed to synth ⊢ has_pow α ℕ
example (a : α) : a ^ (0:ℕ) = 1 := sorry -- ok, coerces
example (a : α) : a ^ (0:ℤ) = 1 := sorry -- ok
```

The issue is that
* we first try to solve `has_pow ?α ?β`, which is postponed
* then infer `?α = nat` from `a`
* then at some point call `elaborator::synthesize()` and default `β` to `nat`
* then try to solve `has_pow nat nat`, which fails at `int =?= nat`
2018-04-04 13:05:59 +02:00
..
array feat(library/init/meta/interactive): add goal tagging support for by_cases 2017-12-13 15:17:13 -08:00
bool feat(init/data/string/ops): add string.split 2018-01-15 09:58:19 +01:00
char refactor(library/init/data): replace char.zero_lt_d800 proof 2018-02-15 14:36:28 -08:00
fin chore(library/init/data/fin/ops): revert 107ad36259. 2017-12-12 10:53:12 -08:00
int feat(library/type_context): smart unfolding 2018-01-09 15:09:08 -08:00
list refactor(init/category/lawful): unbundle lawful classes 2018-03-20 14:58:35 -07:00
nat fix(init/core): remove out_param from has_pow 2018-04-04 13:05:59 +02:00
option chore(init/category): final touches 2018-03-20 14:58:36 -07:00
ordering feat(library/tactic/simplify): simp reduces c_1 ... = c_2 ... to false 2018-01-12 11:30:45 -08:00
rbmap chore(library/init/data/rbmap): add missing file 2017-11-19 19:49:36 -08:00
rbtree chore(library/init/data/rbtree/basic): remove unnecessary equation 2017-11-22 08:22:42 -08:00
sigma refactor(frontends/lean/tactic_notation): rename note/define tactics to have/let 2017-06-22 08:03:23 -07:00
string perf(init/data/string/ops): make string.split linear 2018-01-15 10:51:27 +01:00
subtype feat(init/data/subtype): add subtype.eta 2017-05-27 04:13:59 -04:00
sum feat(frontends/lean): no global universes in the frontend 2017-02-08 17:23:04 -08:00
unsigned feat(library/init/data/fin): add div 2017-03-05 16:43:15 -08:00
basic.lean refactor(library/init/core,library/init/unit): make unit an abbreviation of punit.{0} 2018-03-27 10:33:04 -07:00
default.lean fix(init/data/default): add missing files 2018-03-22 00:15:56 +01:00
prod.lean feat(init): some simp lemmas 2018-03-01 16:07:52 +01:00
punit.lean refactor(library/init/core,library/init/unit): make unit an abbreviation of punit.{0} 2018-03-27 10:33:04 -07:00
quot.lean feat(init/data/quot): show that quot is the quotient by the generated equivalence 2017-05-27 04:14:00 -04:00
repr.lean fix(library/string): unicode char literals 2017-10-27 09:48:09 -07:00
set.lean refactor(init/category/functor): merge has_map into functor 2018-03-20 14:58:36 -07:00
setoid.lean fix(library/init/data/setoid): fix redundant parameter 2018-01-28 15:49:35 -08:00
to_string.lean refactor(library): add has_to_string back (but it produces unquoted values) 2017-06-18 18:30:10 -07:00